J3.x

Erstelle ein einfaches Modul/Entwicklung eines Basismoduls

From Joomla! Documentation

< J3.x:Creating a simple module
Revision as of 22:52, 21 July 2020 by FuzzyBot (talk | contribs) (Updating to match new version of source page)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Other languages:
Bahasa Indonesia • ‎Deutsch • ‎English • ‎Nederlands • ‎español • ‎français • ‎português do Brasil • ‎русский • ‎中文(台灣)‎
Joomla! 
3.x
Anleitung
Ein einfaches Modul erstellen

Dies ist eine mehrteilige Beitragsserie über das Erstellen eines einfachen Moduls für Joomla! Version Joomla 3.x. Du kannst dich in den Artikeln der Beitragsserie über das Dropdown-Menü bewegen.

Beginne mit der Einführung und bewege dich in der Beitragsserie weiter durch die Nutzung des Navigationsbutton am Ende oder durch die Box auf der rechten Seite (Beiträge dieser Serie). Zwei Videos unterstützen das Tutorial Basic Joomla Module Development video 1 und Basic Joomla Module Development video 2.




Module sind leichtgewichtige und flexible Erweiterungen. Sie werden für kleine Teile der Seite genutzt und sind im allgemeinen weniger komplex und können über verschiedene Komponenten hinweg gesehen werden.

Du kannst viele Beispiele von Modulen in der Standardinstallation von Joomla sehen: Menüs, Letzten Beiträge, Anmeldeformular und eine Menge mehr.

Diese Anleitung wird dir erklären wie man ein einfaches "Hello World" Modul erstellt. Durch diese Anleitung wirst du die Basisstruktur eines Moduls kennen lernen. Diese Grundstruktur kannst du erweitern und produktivere Module produzieren.

Datei Struktur

Es gibt vier grundlegende Dateien, welche in der Standardvorlage der Modulentwicklung genutzt werden.

  • mod_helloworld.php - Diese Datei ist der Haupteinstiegspunkt für das Modul. Es führt alle notwendigen Initialisierungsroutinen und Hilferoutinen aus, um alle notwendigen Daten zu sammeln, sowie das Template einzufügen für die Anzeige der Modulausgabe.
  • mod_helloworld.xml - Diese Datei enthält Informationen über das Modul. Es definiert die Dateien welche notwendig bei der Installation durch den Joomla! Installer sind und bestimmt Konfigurationsparameter für das Modul.
  • helper.php - Diese Datei enthält die Hilfsklasse, die für die eigentliche Arbeit beim Abrufen der Informationen (normalerweise aus der Datenbank oder einer anderen Quelle), die im Modul angezeigt werden sollen, verwendet wird.
  • tmpl/default.php - Dies ist ein Modultemplate. Diese Datei nutzt die Daten, welche durch mod_helloworld.php gesammelt wurden und generiert das HTML welches dann auf der Seite angezeigt wird.

mod_helloworld.php erstellen

Die Datei mod_helloworld.php führt drei Aufgaben aus:

  • Füge die Datei helper.php hinzu, mit den Klassen, welche für das Sammeln der notwendigen Daten zuständig ist.
  • Rufen Sie die entsprechende Hilfsklassenmethode auf, um die Daten abzurufen
  • Einfügen des Templates um die Ausgabe anzuzeigen.

Die Hilfsklasse ist in unserer helper.php Datei definiert. Diese ist in einer require_once Anweisung enthalten:

require_once dirname(__FILE__) . '/helper.php';

require_once wird verwendet, weil unsere Hilfsfunktionen innerhalb einer Klasse definiert sind und die Klasse nur einmal definiert werden soll.

Unsere Hilfsklasse wurde noch nicht definiert, aber wenn dies der Fall ist, wird sie eine Methode enthalten: getHello (). Für unser grundlegendes Beispiel ist dies nicht wirklich notwendig. Die "Hello, World" -Nachricht, die diese Methode zurückgibt, könnte einfach in die Vorlage aufgenommen werden. Wir verwenden hier eine Helferklasse, um diese grundlegende Technik zu demonstrieren.

Unser Modul verwendet derzeit keine Parameter, aber wir werden sie trotzdem an die Hilfsmethode übergeben, damit sie später verwendet werden kann, wenn wir uns dazu entscheiden, die Funktionalität unseres Moduls zu erweitern.

Die Hilfsklassenmethode wird folgendermaßen aufgerufen:

$hello = modHelloWorldHelper::getHello($params);

mod_helloworld.php fertigstellen

Die komplette Datei mod_helloworld.php ist wie folgt:

<?php
/**
 * Hello World! Module Entry Point
 * 
 * @package    Joomla.Tutorials
 * @subpackage Modules
 * @license    GNU/GPL, see LICENSE.php
 * @link       http://docs.joomla.org/J3.x:Creating_a_simple_module/Developing_a_Basic_Module
 * mod_helloworld is free software. This version may have been modified pursuant
 * to the GNU General Public License, and as distributed it includes or
 * is derivative of works licensed under the GNU General Public License or
 * other free or open source software licenses.
 */

// No direct access
defined('_JEXEC') or die;
// Include the syndicate functions only once
require_once dirname(__FILE__) . '/helper.php';

$hello = modHelloWorldHelper::getHello($params);
require JModuleHelper::getLayoutPath('mod_helloworld');

Die eine Zeile, die wir bisher nicht erklärt haben, ist die erste Zeile. Diese Zeile überprüft sicherheitshalber, ob diese Datei über die Joomla! Anwendung enthalten ist. Dies ist notwendig, um eine variable Injektion und andere potenzielle Sicherheitsbedenken zu verhindern.

helper.php erstellen

Die Datei helper.php enthält die Hilfsklasse, die zum Abrufen der Daten verwendet wird, welche in der Modulausgabe angezeigt werden sollen. Wie bereits erwähnt, wird unsere Helferklasse eine Methode haben: getHello (). Diese Methode gibt die Nachricht 'Hello, World' zurück.

Hier ist der Code für die Datei helper.php:

<?php
/**
 * Helper class for Hello World! module
 * 
 * @package    Joomla.Tutorials
 * @subpackage Modules
 * @link http://docs.joomla.org/J3.x:Creating_a_simple_module/Developing_a_Basic_Module
 * @license        GNU/GPL, see LICENSE.php
 * mod_helloworld is free software. This version may have been modified pursuant
 * to the GNU General Public License, and as distributed it includes or
 * is derivative of works licensed under the GNU General Public License or
 * other free or open source software licenses.
 */
class ModHelloWorldHelper
{
    /**
     * Retrieves the hello message
     *
     * @param   array  $params An object containing the module parameters
     *
     * @access public
     */    
    public static function getHello($params)
    {
        return 'Hello, World!';
    }
}

Es gibt keine Regel die besagt, dass wir unsere Hilfsklasse so benennen müssen wie wir. Aber es ist hilfreich dies so zu tun, um sie leichter zu identifizieren und zu lokalisieren. Beachte, dass dieses Format verwendet werden muss, wenn du das Plug-in com_ajax verwenden möchtest.

Fortgeschrittenere Module können Datenbankanforderungen oder andere Funktionen in der Hilfsklassenmethode enthalten.

tmpl/default.php erstellen

Die Datei default.php ist das Template welches die Modulausgabe anzeigt.

Der Code für die Datei default.php ist folgender:

<?php 
// No direct access
defined('_JEXEC') or die; ?>
<?php echo $hello; ?>

Ein wichtiger Punkt ist, dass das Template die gleiche Reichweite wie die Datei mod_helloworld.php hat. Das bedeutet, dass die Variable $hallo in der Datei mod_helloworld.php definiert und dann im Template ohne zusätzliche Deklarationen oder Funktionsaufrufe verwendet werden kann.

mod_helloworld.xml erstellen

Die mod_helloworld.xml wird benötigt, um die Dateien für den Installer, welche beim Kopiervorgang benötigt werden, zu spezifizieren. Außerdem sind Informationen enthalten, die bestimmen welche Parameter in der Konfiguration des Moduls genutzt werden. Zudem sind noch andere Informationen über das Modul enthalten.

Der Code für mod_helloworld.xml ist wie folgt:

<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="3.1.0" client="site" method="upgrade">
    <name>Hello, World!</name>
    <author>John Doe</author>
    <version>1.0.0</version>
    <description>A simple Hello, World! module.</description>
    <files>
        <filename>mod_helloworld.xml</filename>
        <filename module="mod_helloworld">mod_helloworld.php</filename>
        <filename>index.html</filename>
        <filename>helper.php</filename>
        <filename>tmpl/default.php</filename>
        <filename>tmpl/index.html</filename>
    </files>
    <config>
    </config>
</extension>

Manifestdateien erläuteren die technischen Details der in der XML-Datei verwendeten Elemente.

Du wirst feststellen, dass es zwei weitere Dateien gibt, die wir noch nicht erwähnt haben: index.html und tmpl/index.html. Diese Dateien sind enthalten, damit diese Verzeichnisse nicht durchsucht werden können. Wenn ein Benutzer versucht, den Browser auf diese Ordner zu verweisen, wird die Datei index.html angezeigt. Diese Dateien können leer bleiben oder die einfache Zeile enthalten:

<html><body bgcolor="#FFFFFF"></body></html>

So wird nur eine leere Seite anzeigt werden.

Da unser Modul keine Form Felder (form fields) verwendet, ist der Konfigurationsbereich leer.

Installing and Viewing the Module

To install the module, zip up the parent directory of your source files, to create a file called mod_helloworld.zip. Note that it needs to be a .zip file because the server needs to be able to extract it using Apache's mod_zlib library. Go into Joomla admin, to the Extensions / Manage / Install form, click on the Update Package File tab, and upload your zip file. You should find that the module installs ok. If it doesn't, then compare carefully your code with the code above, and ensure your source code files are named correctly. To make the module visible on your site web pages go into the Extensions / Modules listing and click on the Hello World module to edit it.

  1. set the Status to Published
  2. select the Position where the module should appear (if you're unsure about which Position to set, then navigate to Extensions / Templates / Styles, check which template is assigned on your web pages, then follow this guide to finding the module positions).
  3. on the Menu Assignment tab set the Module Assignment to "On all pages"

Save and Close your edit form. Now if you navigate to your site you should see "Hello, World!" displayed in your chosen module position.

Fazit

Modulentwicklung für Joomla! ist ein ziemlich unkomplizierter und einfacher Prozess. Mit den in diesem Tutorial beschriebenen Techniken kann eine endlose Vielzahl von Modulen mit wenig Aufwand entwickelt werden.