Baustelle:Parameter in Komponenten
Inhaltsverzeichnis |
[Bearbeiten] Joomla! standard in einer Lightbox
Joomla! bietet eine einfache Möglichkeit Parameter in Ihrer Komponente zu erstellen und zu verwalten.
Im Allgemeinen reicht dafür das Erstellen einer entsprechenden XML Parameterdatei in welcher die Parameter definiert werden, sowie ein Eintrag in der Toolbar Ihrer Komponente durch den die Komponente com_config aufgerufen wird.
Automatisch werden nun die Parameter Ihrer XML Datei in einer Lightbox mit den entsprechenden HTML Elementen als Formular dargestellt, und beim speichern in das entsprechende Feld Ihrer Komponente in der Tabelle __components eingetragen.
[Bearbeiten] Benutzerdefinierte Darstellung
Die Möglichkeit der Darstellung der Parameter ist zwar recht hübsch, jedoch wird sie ab einer gewissen Anzahl von Parametern etwas unübersichtlich.
Joomla! bietet jedoch auch hier die Möglichkeit die Ausgabe mit Hilfe einiger weniger Zeilen Code ganz an Ihre Bedürfnisse anzupassen. Wir wollen hier zeigen wie sich Parameter gruppieren lassen, was natürlich erst bei einer gewissen Anzahl an Parametern Sinn macht.
[Bearbeiten] Definition der Parameter
Beispiel der Datei
config.xml einer Komponente.
<config> <params group="credits"> <param name="author" type="text" size="30" label="Author" /> <param name="author_email" type="text" size="30" label="Author e-mail" /> <param name="author_url" type="text" size="30" label="Author URL" /> </params> <params group="various"> <param name="various_1" type="text" size="40" label="Custom name" default="custom option 1" /> <param name="various_2" type="text" size="40" label="Custom name" default="custom option 2" /> </params> </config>
[Bearbeiten] Anzeigen der Parameter zum bearbeiten der Werte
Die Anzeige der Parameter geschieht innerhalb eines Formulars welches Sie noch "aussen herum" bauen müssen.
<form... <?php $table = JTable::getInstance('component'); $table->loadByOption('com_KOMPONENTENNAME'); $parameters = new JParameter($table->params, JPATH_COMPONENT.DS.'config.xml'); $groups = $parameters->getGroups(); foreach (array_keys($groups) as $group) { echo '<p>'.$group.'</p>'; echo $parameters->render('params', $group); }//foreach ?> </form>
[Bearbeiten] Ausgabe
[Bearbeiten] Speichern der Parameter
Der folgende Code kann z.B. in einem Controller Ihrer Komponente stehen.
$table = JTable::getInstance('component'); if( ! $table->loadByOption('com_KOMPONENTENNAME') ) { JError::raiseWarning(500, 'Not a valid component'); return false; } $post = JRequest::get('post'); $table->bind($post); //-- Pre-save checks if ( ! $table->check()) { JError::raiseWarning(500, $table->getError()); return false; } //-- Save the changes if ( ! $table->store()) { JError::raiseWarning(500, $table->getError()); return false; }
