Joomla! Programmierung/Programmierung/XML Parameter Elemente/Eigene Parameter

Aus Joomla! Dokumentation
Wechseln zu: Navigation, Suche

orig.: http://docs.joomla.org/Creating_custom_template_parameter_types - Zusammenfassung

Inhaltsverzeichnis

[Bearbeiten] Die standard Parameter Typen

Der Quelltext der Standard Parameter Typen befindet sich in folgendem Verzeichnis: Jeder Parametertyp wird in einer eigenen Datei definiert, die den selben Namen wie der Parametertyp haben muss.

Zum Beispiel befindet sich der category Typ in der Datei File php.png category.php.
Diese Datei beinhaltet eine einzelne Klasse mit Namen JElementCategory, welche die Klasse JElement erweitert.

Folder green.png JOOMLA ROOT

  • Folder blue.png libraries
    • Folder blue.png joomla
      • Folder blue.png html
        • Folder blue.png parameter
          • Folder blue.png element

Folder green.png JOOMLA ROOT

  • Folder blue.png libraries
    • Folder blue.png joomla
      • Folder blue.png html
        • Folder blue.png parameter
          • Folder blue.png element
            • File php.png category.php

[Bearbeiten] Einen eigenen Parametertyp definieren

Um einen benutzerdefinierten Parametertyp zu erstellen, müssen Sie zuerst einen Namen für ihn wählen. Nennen wir ihn nafuparam.

Sie erstellen dann eine neue Datei mit Namen nafuparam.php, welche eine einzelne Klasse mit Namen JElementNafuparam enthält, die JElement erweitert.

Der Code für diesen neuen Parameter kann sich praktisch überall befinden, sollte jedoch immer separat in einem Unterverzeichnis oder zusammen mit anderen beutzerdefinerten Parametern gespeichert werden.

[Bearbeiten] Änderungen an der XML Datei

Sie müssen jetzt die XML Datei ändern, um dem Joomla! Framework mitzuteilen, dass Sie einen neuen Parametertyp hinzugefügt haben, und wo sich der Code befindet, um ihn darzustellen. Fügen Sie also ein addpath Argument in den <params> Tag ein und geben Sie den Pfad an:

<params addpath="[path]/elements">
   ...... Liste der <param> Elemente ......
</params>

In unserem Beispiel könnten wir dann unseren neuen Parameter einsetzen:

<params addpath="[path]/elements">
   <param type="nafuparam" name="setting1" default="4711" />
</params>

[Bearbeiten] PHP Code des Parametertyps

Die einfachste Möglichkeit einen eigenen Parametertyp zu beginnen ist sich aus den bereits bestehenden Parametertypen einen zu suchen der so ähnlich ist wie der den Sie erstellen wollen. Die Stammklasse JElement beinhaltet das meiste was Sie benötigen und für die meisten Parametertypen reicht es lediglich die Methode fetchElement in Ihrer erweiternden Klasse zu überschreiben.

[Bearbeiten] fetchElement()

Die Methode fetchElement gibt den zur Darstellung benötigten HTML Code zurück, der später zur Eingabe des Parameterwertes genutzt wird.

fetchElement( $name, $value, &$node, $control_name )
$name Der eindeutige Name des Parameters aus dem name argument.
$value Der aktuelle Wert des Parameters.
$node Ein JSimpleXMLElement Objekt welches das <param> Element enthält.
$control_name Der Parametertyp aus dem type Argument (z.B. 'category' oder 'nafuparam')

Um den Wert eines der Argumente des <param> Elements zu erhalten nutzen sie die Methode attributes() des Objekts JSimpleXMLElement welches in $node übergeben wurde. Um zum Beispiel den Wert des Arguments class zu erhalten schreiben Sie

$class = $node->attributes('class');

Hier sehen Sie zum Beispiel die Methode fetch Element für eine einfache Version des Parametertyps text (Die tatsächliche Version ist etwas anspruchsvoller)

function fetchElement( $name, $value, &$node, $control_name )
{
    $class = ($node->attributes('class')) ? $node->attributes('class') : 'text_area';
 
    $return = '<input type="text"' .
                     'name="' . $control_name . '[' . $name . ']"' .
                     'id="'   . $control_name . '[' . $name . ']"' .
                     'value="' . $value . '"' .
                     'class="' . $class . '" />'; 
    return $return;
}

Beachten Sie, dass das Parameterfeld ein id Attribut besitzen muss, damit die <label> HTML Elemente dit durch die Methode fetchTooltip generiert werden übereinstimmen.

[Bearbeiten] fetchTooltip()

Eine andere Methode die Sie möglicherweise auch noch überschreiben möchten ist die Methode fetchTooltip. Diese Methode generiert den HTML Code um einen Tooltip für das Feld darzustellen.

fetchTooltip( $label, $description, &$node, [$control_name=''],[$name=''] )
$label Der String der im label Argument der <param> Definition übergeben wurde.
$description Der String der im description Argument der <param> Definition übergeben wurde.
$node Ein JSimpleXMLElement Objekt welches das <param> Element beinhaltet.
$control_name Der Parametertyp aus dem type Argument (z.B. 'category' oder 'nafuparam')
$name Der eindeutige Name des Parameters aus dem name argument.

[Bearbeiten] Beispiele

Wenn Sie auch ein nützliches Beispiel für ein benutzerdefiniertes Parameterelement haben, dürfen Sie es gerne hier eintragen.

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Sonstiges
Team Navigation
Werkzeuge