Wir erstellen ein Modul. Das ist ein Add-On, welches die Anzeige des eigentlichen Inhalts erweitert. Man verwendet es, wenn ein Inhalt nicht der Hauptinhalt ist und an unterschiedlichen Positionen dargestellt wird. Nebenbei ist es möglich, die Menüpunkte auszuwählen, unter denen das Modul sichtbar ist.
In Joomla gibt es eine Vielzahl von Modulen, an denen ich mich orientiere. Beispielsweise:
- Menüs (mod_menu)
- Login Formular (mod_login)
- und viele mehr.
Dieser Abschnitt erklärt, wie du das Grundgerüst für ein simples Modul erstellst. Dieses gibt im ersten Schritt lediglich einen Text aus. Darauf bauen wir im weiteren Verlauf auf.
Für Ungeduldige: Sieh dir den geänderten Programmcode in der Diff-Ansicht[^codeberg.org/astrid/j4examplecode/compare/t30...t31] an und übernimm diese Änderungen in deine Entwicklungsversion.
Schritt für Schritt
In diesem Abschnitt fügen wir ein Module hinzu. Es gibt einige grundlegende Dateien, die im Standardmuster der Modulentwicklung verwendet werden. Diese erstellen wir in diesem Teil.
Neue Dateien
Module
modules/mod_foo/ language/en-GB/en-GB.mod_foo.ini
Diese Datei stellt die Texte der Übersetzung allgemein bereit.
<!-- https://codeberg.org/astrid/j4examplecode/raw/branch/t31/src/modules/mod_foo/language/en-GB/en-GB.mod_foo.ini -->
MOD_FOO="[PROJECT_NAME]"
MOD_FOO_XML_DESCRIPTION="Foo Module"
modules/mod_foo/ language/en-GB/en-GB.mod_foo.sys.ini
Diese Datei stellt die Texte für Menü und Installationsroutine bereit.
<!-- https://codeberg.org/astrid/j4examplecode/raw/branch/t31/src/modules/mod_foo/language/en-GB/en-GB.mod_foo.sys.ini -->
MOD_FOO="[PROJECT_NAME]"
MOD_FOO_XML_DESCRIPTION="Foo Module"
modules/mod_foo/ mod_foo.php
mod_foo.php
ist der Haupteinstiegspunkt ins Modul. Die Datei führt die Initialisierungsroutinen aus, ruft Hilfsroutinen auf, um alle erforderlichen Daten zu erfassen, und ruft das Template auf, in dem die Modulausgabe angezeigt wird.
// https://codeberg.org/astrid/j4examplecode/raw/branch/t31/src/modules/mod_foo/mod_foo.php
<?php
/**
* @package Joomla.Administrator
* @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
*/
\defined('_JEXEC') or die;
use Joomla\CMS\Helper\ModuleHelper;
require ModuleHelper::getLayoutPath('mod_foo', $params->get('layout', 'default'));
In Joomla 3x war eine Zeile wie
$ moduleclass_sfx = htmlspecialchars ($ params-> get ('moduleclass_sfx'));
notwendig. Diese Zeile ist nicht mehr erforderlich. Siehe PR 17447.
modules/mod_foo/ mod_foo.xml
mod_foo.xml
definiert die Dateien, die von der Installationsroutine kopiert werden und gibt Konfigurationsparameter für das Modul an. Du kennst dies bereits von den vorher erstellten Erweiterungen.
<!-- https://codeberg.org/astrid/j4examplecode/raw/branch/t31/src/modules/mod_foo/mod_foo.xml -->
<?xml version="1.0" encoding="utf-8"?>
<extension type="module" client="site" method="upgrade">
<name>MOD_FOO</name>
<creationDate>[DATE]</creationDate>
<author>[AUTHOR]</author>
<authorEmail>[AUTHOR_EMAIL]</authorEmail>
<authorUrl>[AUTHOR_URL]</authorUrl>
<copyright>[COPYRIGHT]</copyright>
<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
<version>__BUMP_VERSION__</version>
<description>MOD_FOO_XML_DESCRIPTION</description>
<files>
<filename module="mod_foo">mod_foo.php</filename>
<folder>tmpl</folder>
<folder>language</folder>
<filename>mod_foo.xml</filename>
</files>
</extension>
modules/mod_foo/tmpl/default.php
default.php
ist das Template. Diese Datei nimmt die von mod_foo.php
gesammelten Daten und generiert den HTML-Code, der auf der Seite angezeigt wird. echo '[PROJECT_NAME]';
sorgt dafür, dass der Name des Projekts im Frontend an der Position angezeigt wird, an der das Modul veröffentlicht ist.
// https://codeberg.org/astrid/j4examplecode/raw/branch/t31/src/modules/mod_foo/tmpl/default.php
<?php
/**
* @package Joomla.Administrator
* @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
*/
\defined('_JEXEC') or die;
echo '[PROJECT_NAME]';
Beachte: In der Templatedatei ist es möglich, alle in
mod_foo.php
definierten Variablen zu verwenden.
Geänderte Dateien
Es gibt keine geänderten Dateien.
Teste dein Joomla-Module
- Installiere dein Modul in Joomla Version 4, um es zu testen. Am Anfang ist es das Einfachste, die Dateien manuell an Ort und Stelle zu kopieren:
Kopiere die Dateien im modules
Ordner in den modules
Ordner deiner Joomla 4 Installation.
-
Installiere dein Modul wie in Teil eins beschrieben, nachdem du alle Dateien kopiert hast. Öffne dazu das Menü
System | Install | Discover
. Hier siehst du einen Eintrag zu dem eben kopierten Modul. Wähle diesen aus und klicke auf die SchaltflächeInstall
. -
Teste als nächstes, ob dein Modul fehlerfrei arbeitet. Öffne das Menü
Content | Site Modules
und klicke in der WerkzeugleisteNew
.
- Trage einen Titel im entsprechenden Feld ein und wähle eine Position. Stelle im Tabulator
Menu Assignment
sicher, dass das Modul auf allen Seiten angezeigt wird. Klicke am Ende in der Werkzeugleiste die SchaltflächeSave
.
- Fertig! Wechsel in die Frontendansicht und überzeuge dich davon, dass alles richtig angezeigt wird.
Alternativ ist es möglich, dass Modul in einen Beitrag einzufügen.
Wir haben eine solide Grundlage für die weiteren Schritte in der Entwicklung des Modules.
Links
Joomla Dokumentation[^docs.joomla.org/j4.x:creating_a_simple_module/de]
Webmentions