Joomla 4.x-Tutorial - Entwicklung von Erweiterungen - Module - Erste Schritte

Ändere diesen Beitrag

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-Ansichtgithub.com/astridx/boilerplate/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://raw.githubusercontent.com/astridx/boilerplate/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://raw.githubusercontent.com/astridx/boilerplate/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://raw.githubusercontent.com/astridx/boilerplate/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://raw.githubusercontent.com/astridx/boilerplate/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://github.com/astridx/boilerplate/raw/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

  1. 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.

  1. 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äche Install.
  2. Teste als nächstes, ob dein Modul fehlerfrei arbeitet. Öffne das Menü Content | Site Modules und klicke in der Werkzeugleiste New.

Joomla Modul testen

Joomla Modul testen

  1. 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äche Save.

Joomla Modul erstellen

  1. Fertig! Wechsel in die Frontendansicht und überzeuge dich davon, dass alles richtig angezeigt wird.

Joomla Modul im Frontend

Alternativ ist es möglich, dass Modul in einen Beitrag einzufügen.

Joomla Modul im Frontend

Wir haben eine solide Grundlage für die weiteren Schritte in der Entwicklung des Modules.

Links

Joomla Dokumentationhttps://docs.joomla.org/j4.x:creating_a_simple_module/de

Ändere diesen Beitrag

Comments