Wir ergänzen Namespace und Helper.
Für Ungeduldige: Sieh dir den geänderten Programmcode in der Diff-Ansicht[^codeberg.org/astrid/j4examplecode/compare/t31...t32] an und übernimm diese Änderungen in deine Entwicklungsversion.
Schritt für Schritt
Neue Dateien
Module
Die Logik im Modul ist unter Umständen komplex. Deshalb ist gut, den Code übersichtlich zu strukturieren. Dies geschieht mittels Helper-Dateien. Diese legen wir im Verzeichnis Helper
an.
modules/mod_foo/ Helper/FooHelper.php
Ich habe die Datei allgemein
FooHelper
benannt. Gute Stil ist es, ihr einen sprechenden Namen zu geben. Jede Hilfsdatei hat eine spezielle Aufgabe und nach ihr sollte sie benannt werden. Die Datei, die die neuesten Artikel lädt, heißt beispielsweiseArticlesLatestHelper
. So erkennt man auf den ersten Blick, was in der Datei steckt.
Um unkompliziert auf die Datei zuzugreifen, ergänzen wir den Namespace namespace FooNamespace\Module\Foo\Site\Helper;
.
modules/mod_foo/ Helper/FooHelper.php
// https://codeberg.org/astrid/j4examplecode/raw/branch/t32/src/modules/mod_foo/src/Helper/FooHelper.php
<?php
/**
* @package Joomla.Site
* @subpackage mod_foo
*
* @copyright Copyright (C) 2005 - 2020 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
namespace FooNamespace\Module\Foo\Site\Helper;
\defined('_JEXEC') or die;
/**
* Helper for mod_foo
*
* @since __BUMP_VERSION__
*/
class FooHelper
{
/**
* Retrieve foo test
*
* @param Registry $params The module parameters
* @param CMSApplication $app The application
*
* @return array
*/
public static function getText()
{
return 'FooHelpertest';
}
}
Geänderte Dateien
modules/mod_foo/ mod_foo.php
Um die Inhalte von FooHelper
im Modul mod_foo.php
zu nutzen, importieren wir diese mittels use FooNamespace\Module\Foo\Site\Helper\FooHelper;
. Anschließden rufen wir die Funktion FooHelper::getText()
auf und speichern das Ergebnis in der Variablen $test
.
\defined('_JEXEC') or die;
use Joomla\CMS\Helper\ModuleHelper;
use FooNamespace\Module\Foo\Site\Helper\FooHelper;
$test = FooHelper::getText();
require ModuleHelper::getLayoutPath('mod_foo', $params->get('layout', 'default'));
modules/mod_foo/ mod_foo.xml
Den Namespace tragen wir ins Manifest ein. So wird dieser bei der Installation in Joomla registriert. Außerdem ergänzen wir das neue Verzeichnis, damit dieses bei einer Installation an die richtige Stelle kopiert wird.
<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
<version>__BUMP_VERSION__</version>
<description>MOD_FOO_XML_DESCRIPTION</description>
<namespace>FooNamespace\Module\Foo</namespace>
<files>
<filename module="mod_foo">mod_foo.php</filename>
<folder>tmpl</folder>
<folder>Helper</folder>
<folder>language</folder>
<filename>mod_foo.xml</filename>
</files>
modules/mod_foo/tmpl/default.php
Im Layout greifen wir abschließen auf die Variable zu. Die Logik zum Errechnen des Variablenwertes ist gekapselt. So bleibt das Layout übersichtlich. Wir fügen hier lediglich den Texgt $test
ein. Wenn wir genauer wissen möchten, was hinter $test
steckt, dann sehen wir im Helper nach.
\defined('_JEXEC') or die;
echo '[PROJECT_NAME]';
echo '[PROJECT_NAME]' . $test;
Teste dein Joomla-Module
- 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.
Installiere dein Module wie in Teil eins beschrieben, nachdem du alle Dateien kopiert hast. Joomla aktualisiert bei der Installation die Namespaces für dich. Da eine Datei und Namespaces hinzugekommen sind, ist dies erforderlich.
- Überprüfe, ob der über die Funktion
FooHelper::getText()
errechnete Text im Frontend angezeigt wird.
Links
Joomla Dokumentation[^docs.joomla.org/j4.x:creating_a_simple_module/de]
Webmentions