Joomla: Verwenden von Helper in eigenen Komponenten

Helper sind dem Namen entsprechend kleine Heleferlein, die aus allen Bereichen von Joomla! Daten liefern. Hier eine Beschreibung, wie man Helper in eigenen Komponenten, Modulen oder Plugins einbinden kann.

In einer eigenen Komponente in Joomla! packt man Helper am besten in ein eigenes Verzeichnis innerhalb der Installation. Heißt eure Komponente z.B. com_test, erstellt ihr innerhalb von components/com_test ein Verzeichnis helpers. Der Pfad sieht dan also so aus:

components/com_test/helpers/test.php

 Im Beispiel möchten wir nun einen Helper erstellen, der je nach übergebener Variable einen entsprechenden Wert zurückliefert. Dazu erstellt ihr im Verzeichnis helpers eine Datei test.php. Diese hat folgenden Inhalt.

<?php

/**
 *	Joomla! - Tutorials
 *	Beispiel: Helper einbinden
 * 	Erstellt von: Torsten Scheel
 * 	www.torstenscheel.de
*/

defined('_JEXEC') or die();

class TestHelper {
	
  	public function getData($typ) {
  		switch($typ) {
  			case 1:
				return "Helper liefert Typ 1";
  				break;
  			case 2:
				return "Helper liefert Typ 2";
  				break;
  		}
	}
}

Als nächstes benötigen wir eine Datei, aus der der Helper aufgerufen wird. In diesem Beispiel ist das eine simple Template-Datei. Diese befindet sich in:

components/com_test/views/dashboard/tmpl/default.php

Die Datei hat folgenden Aufbau

<?php
/**
 *  Joomla! - Tutorials
 *  Beispiel: Helper einbinden
 *  Template-Datei default.php
 *  Erstellt von: Torsten Scheel
 *  www.torstenscheel.de
*/

defined("_JEXEC") or die("Restricted access");

?>
<div class="content">
   <?php
      JLoader::register('TestHelper',JPATH_COMPONENT_SITE.'/helpers/test.php');
      $template = new TestHelper();
      echo $template->getData(1);
      echo $template->getData(2);
   ?>
</div>

Was passiert nun beim Aufruf der Template-Datei? Zunächst wird über JLoader::register die Helper-Datei registriert. Damit könnt ihr dann im nächsten Schritt über $template = new TestHelper(); auf die in der Helper-Datei befindliche Klasse TestHelper() zugreifen.

Innerhalb der Klasse gibt es eine Funktion getData($typ), der eine Variable $typ übergeben wird. Je nach Wert der Variablen, 1 oder 2, wird innerhalb der Helper-Funktion nun entschieden, welcher Ausgabe-Text zurückgeliefert wird.
Wird als Wert 1 übergeben, wird an die Template-Datei Helper liefert Typ 1 zurückgeliefert. Wird Wert 2 übergeben, gibt der Helper Helper liefert Typ 2 zurück.