Joomla! Programmierung/Programmierung/XML Parameter Elemente/Eigene Parameter/Nafucheckbox
Inhaltsverzeichnis |
[Bearbeiten] NafuCheckbox - Eine Checkbox
Eine Checkbox fehlt bei den Standardparametern. Wir wollen hier eine Möglichkeit aufzeigen eine solche zu erstellen.
[Bearbeiten] Speicherort der Datei
An welchem Ort sie die Datei Ihres Parameterelements speichern bleibt weitestgehend Ihnen überlassen. Voraussetzung ist natürlich, dass das Joomla! Framework auf die Datei zugreifen kann.
Wir nehmen an, dass wir unser Parameterelement für eine Komponente benötigen. Möglich sind natürlich auch alle anderen Typen von Joomla! Erweiterungen wie Module, Plugins und Templates.
Wir wollen die Datei in einem Unterverzeichnis Ihrer Komponente im Joomla! Administratorbereich speichern wie in Abb. 1.1.1 zu sehen.
[Bearbeiten] Änderungen an der XML Datei
Fügen Sie dem Tag <params> ein addPath Attribut hinzu und geben Sie dort den Pfad zu Ihrem Parameterelement an.
Sie können jetzt das neue Parameterelement benutzen, um Ihre Parameter in Gruppen zu unterteilen.
... <params addPath="/administrator/components/com_KOMPONENTE/assets/elements"> ... <param name="checktest" type="checkbox" label="Check this" description="Die Beschreibung" /> ... </params> ...
[Bearbeiten] PHP Code
Hier definieren wir die Checkbox.
<?php /** * Renders a checkbox * * @package Joomla-Nafu.de * @subpackage Demos */ class JElementNafucheckbox extends JElement { /** * Element name * * @access protected * @var string */ var $_name = 'Nafucheckbox'; function fetchElement($name, $value, &$node, $control_name) { $size =( $node->attributes('size') ? ' size="'.$node->attributes('size').'"' : '' ); $class =( $node->attributes('class') ? ' class="'.$node->attributes('class').'"' : ' class="text_area"' ); $text =( $node->attributes('default') ? $node->attributes('default') : '' ); $checked =( $value == 'on' ) ? ' checked="checked"' : ''; return '<input type="checkbox" name="'.$control_name.'['.$name.']" id="'.$control_name.$name.'"'.$class.$checked.' />'.$text; }//function }//class
Beachten Sie das kein Eintrag im Parameterfeld der Datenbank erfolgt, wenn die Checkbox nicht markiert ist. Ist das Feld jedoch markiert wird NAME=on eingetragen.
[Bearbeiten] Anwendungsbeispiele
In diesem Beispiel wird der Wert der Checkbox aus den Komponentenparametern die in der Datenbank gespeichert sind abgefragt.
$params = JComponentHelper::getParams('com_nafutest'); if( $params->get('checktest') ) { echo 'Die Checkbox wurde markiert'; }
<?xml version="1.0" encoding="utf-8" ?> <config> <params addPath="/administrator/components/com_KOMPONENTE/assets/elements"> <param name="checktest" type="nafucheckbox" label="Check Test" description="Die Beschreibung des Check Tests" /> </params> </config>