Zum Inhalt springen
Astrid

Module - Parameter

Über Parameter ist das Joomla-Modul für Endbenutzer flexibel anpassbar. Parameter sind Übergabewerte, mit deren Hilfe Joomla auf die Verarbeitung bestimmter Werte eingestellt wird. Anders ausgedrückt sind Parameter extern gesetzte Einflussfaktoren. Sie werden verwendet, um dem Modul von außen mitzuteilen, welche Daten wie verarbeitet werden sollen.

Für Ungeduldige: Sieh dir den geänderten Programmcode in der Diff-Ansicht[^codeberg.org/astrid/j4examplecode/compare/t32…t33] an und übernimm diese Änderungen in deine Entwicklungsversion.

Schritt für Schritt

In diesem Abschnitt fügen wir Parameter zum Modul hinzu.

Neue Dateien

In diesem Teil wurden lediglich Dateien geändert. Es gibt keine neuen Dateien.

Geänderte Dateien

Modul

modules/mod_foo/language/en-GB/mod_foo.ini

modules/mod_foo/language/en-GB/mod_foo.ini

Die Beschriftung des Parameters im Administrationsbereich soll sich an die aktive Sprache anpassen. Aus diesem Grund nutzen wir die Sprachdatei.

Wunderst du dich über den Präfix COM_ in COM_MODULES_FOOPARAMS_FIELDSET_LABEL? Der Sprachstring wird von Joomla automatisch erstellt, weil ein Fieldset mit dem Namen fooparams hinzukommt.

MOD_FOO="[PROJECT_NAME]"
MOD_FOO_XML_DESCRIPTION="Foo Module"
+MOD_FOO_FIELD_URL_LABEL="URL"
+COM_MODULES_FOOPARAMS_FIELDSET_LABEL="Foo Parameter"
modules/mod_foo/mod_foo.xml

Im Manifest fügen wir den neuen Paramter hinzu, so dass dieser im Joomla Backend bearbeitbar ist.

modules/mod_foo/ mod_foo.xml

 		<folder>language</folder>
 		<filename>mod_foo.xml</filename>
 	</files>
+	<config>
+		<fields name="params">
+			<fieldset name="fooparams">
+				<field
+					name="domain"
+					type="url"
+					label="MOD_FOO_FIELD_URL_LABEL"
+					filter="url"
+				/>
+			</fieldset>
+		</fields>
+	</config>
 </extension>

Verwende <fieldset name="basic">. um die Parameter im ersten sich unmittelbar öffnenden Tabulator anzuzeigen.

Neben den Parametern, die ein Entwickler in sein Modul einfügt, gib es Standardparameter, die Joomla selbst handhabt. Zum Beispiel /administrator/components/com_modules/forms/advanced.xml.

Joomla Modul Parameter

modules/mod_foo/tmpl/default.php

In der moduleigenen Template-Datei können wir nun auf den Wert des Parameters zugreifen. Im nachfolgenden Beispiel geben wir den Wert als Text aus. Meist wird ein Parameter in einer komplexeren Art verwendet, zum Beispiel innerhalb von Kontrollstrukturen wie If-Anweisungen oder Schleifen.

Ein Beispiel für die komplexere Anwendung eines Parameters ist eine digitale Landkarte, auf der anhand von Parametern Steuerelemente wie Lokalisiere mich oder eine Auswahl des Kartentyps ermöglicht wird.

modules/mod_foo/tmpl/default.php

 \defined('_JEXEC') or die;

-echo '[PROJECT_NAME]' . $test;
+echo '[PROJECT_NAME]' . $test . '<br />' . $url;
modules/mod_foo/src/Dispatcher/Dispatcher.php

Der Dispatcher sammelt alle Variablen, um sie später im Layout tmpl/default.php zu verwenden. Hier ergänzen wir den Parameter.


     {
         $data = parent::getLayoutData();
 
-        $data['text'] = $this->getHelperFactory()->getHelper('FooHelper')->getText();
+        $data['text'] = $this->getHelperFactory()->getHelper('FooHelper')->getText($data['params']);
 
         return $data;
     }
modules/mod_foo/src/Helper/FooHelper.php
 namespace FooNamespace\Module\Foo\Site\Helper;
 
+use Joomla\Registry\Registry;
+
 \defined('_JEXEC') or die;
 
-       public function getText()
+       public function getText(Registry $params)
        {
-               return ' FooHelpertest';
+               $url = $params->get('domain', '-');
+
+               return ' FooHelpertest: ' . $url;
        }
 }

Teste dein Joomla-Module

  1. Installiere das Modul in Joomla Version 4, um es zu testen:

Kopiere die Dateien im modules Ordner in den modules Ordner deiner Joomla 4 Installation.

Eine neue Installation ist nicht erforderlich. Verwende die aus dem vorhergehenden Teil weiter.

  1. Überprüfe das Vorhandensein des Parameters im Backend.

Joomla Modul testen

  1. Überzeuge dich davon, dass der Wert des Parameters bei der Anzeige im Frontend berücksichtigt wird.

Joomla Modul testen

Joomla Dokumentation[^docs.joomla.org/j4.x

/de]