Joomla! Programmierung/Programmierung/Module

Aus Joomla! Dokumentation
Wechseln zu: Navigation, Suche

In diesem Tutorial wird gezeigt, wie ein einfaches Modul erstellt wird, das je nach übergebenen Parametern die letzten X eingeloggten User auflistet.

Inhaltsverzeichnis

[Bearbeiten] mod_lastusers.php

Dies ist die Einstiegsdatei. Sie fordert die helper.php an, verarbeitet die Parameter und ruft die Ausgabe auf. Das Objekt $params wurde von Joomla! mit allen vorhandenen Parametern befüllt und ist im Modul immer verfügbar. Um die einzelnen Werte aus $params auszulesen, kann man entweder JParameter::get oder JParameter::def nutzen. Die letztere Methode hat den Vorteil, dass sie den Defaultwert, den man mit übergibt automatisch als Wert setzt, sollte kein Originalwert existieren. Dies hat den Vorteil, dass wir später immer einen Wert gegeben haben. Die Variable $users wird durch die helper.php mit der, in $params definierten, Anzahl an Benutzer befüllt. Am Ende rufen wir noch die Ausgabedatei (das sogenannte Template) des Moduls auf.

<?php
/**
 * @author      Joomla!-Nafu
 * @authorurl   http://www.joomla-nafu.de
 * @version     0.1
 * @license     GNU General Public License, http://www.gnu.org/licenses/gpl-2.0.html
 *
 * JNafu! - Joomla! 1.5.x Modul, dass die letzten X eingeloggten User auflistet
 * Copyright (C) 2009 - Joomla!-Nafu
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License as published by the
 * Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License along
 * with this program; if not, see <http://www.gnu.org/licenses/>.
**/
 
// Verhindern, dass die Datei direkt aufgerufen wird
defined('_JEXEC') or die('Restricted access');
 
// helper.php aufrufen
JLoader::import('mod_lastusers.helper', JPATH_SITE.DS.'modules');
 
// Parameter aufrufen und falls nicht definiert Werte zuweisen:
 
// Anzahl der User, die angezeigt werden sollen,
// falls der Wert nicht vorhanden ist, wird er auf 5 gesetzt
$params->def('number_user', 5);
// Wenn der Username angezeigt werden soll, dann ist der Wert 1,
// beim "echten" Namen ist der Wert 0, falls der Wert nicht
// vorhanden ist, wird er auf 1 gesetzt
$params->def('username', 1);
 
// Alle User in Abhängigkeit von $params laden
$users = modLastUsersHelper::getUsers($params);
 
// default.php einbinden
// Als zweiter Parameter kann ein alternativer Dateiname
// übergeben werden:
// JModuleHelper::getLayoutPath('mod_lastusers', 'user')
// in diesem Fall wird statt der default.php die user.php aus
// dem tmpl Order geladen
require(JModuleHelper::getLayoutPath('mod_lastusers'));
 
?>

[Bearbeiten] Referenz

[Bearbeiten] helper.php

Die helper.php übernimmt gewissermaßen die Funktionen des Models und des Controllers. Hier werden Datenbankoperationen ausgeführt und Daten verarbeitet. In diesem Tutorial nutzen wir eine (Hilfs-)Methode um parameterabhängig die ID von den X letzten eingeloggten User auszulesen. Danach wird mithilfe der JUser-Klasse für jede ID ein Userobjekt erstellt und in $temp gespeichert. Zu guter letzt wird $temp zurück gegeben.

<?php
/**
 * @author      Joomla!-Nafu
 * @authorurl   http://www.joomla-nafu.de
 * @version     0.1
 * @license     GNU General Public License, http://www.gnu.org/licenses/gpl-2.0.html
 *
 * JNafu! - Joomla! 1.5.x Modul, dass die letzten X eingeloggten User auflistet
 * Copyright (C) 2009 - Joomla!-Nafu
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License as published by the
 * Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License along
 * with this program; if not, see <http://www.gnu.org/licenses/>.
**/
 
// Verhindern, dass die Datei direkt aufgerufen wird
defined('_JEXEC') or die('Restricted access');
 
class modLastUsersHelper {
 
    // Hilfsmethode um X User auszulesen
    public function getUsers($params) {
 
        // Datenbankobjekt holen
        $db = JFactory::getDBO();
 
        // Query zusammenbauen, dabei X User auslesen
        $query = '
            SELECT
                `id`
            FROM
                #__users
            ORDER BY
                `lastvisitDate` DESC
            LIMIT
                0, '.( (int) $params->get('number_user') )
        ;
 
        // Query speichern
        $db->setQuery($query);
 
        // Das Ergebnis als Array ausgeben lassen
        $users = $db->loadResultArray();
 
        // $temp als Array initialisieren
        $temp = array();
 
        // Alle ausgelesenen UserID durchgehen
        foreach ($users as $user) {
 
            // Userobjekt generieren
            $temp[] = JFactory::getUser($user);
 
        }
 
        // User zurückgeben
        return $temp;
 
    }
 
}
 
?>

[Bearbeiten] Referenz

[Bearbeiten] tmpl/default.php

Dies ist die Ausgabe des Moduls. Sie kann mittels Template Override beliebig angepasst werden. In dieser File white.png default.php werden die User in einer Definitionsliste aufgelistet. Dabei wird je nach Parameterwert entweder der Username oder der richtige Name ausgegeben.

<?php
/**
 * @author      Joomla!-Nafu
 * @authorurl   http://www.joomla-nafu.de
 * @version     0.1
 * @license     GNU General Public License, http://www.gnu.org/licenses/gpl-2.0.html
 *
 * JNafu! - Joomla! 1.5.x Modul, dass die letzten X eingeloggten User auflistet
 * Copyright (C) 2009 - Joomla!-Nafu
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License as published by the
 * Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License along
 * with this program; if not, see <http://www.gnu.org/licenses/>.
**/
 
// Verhindern, dass die Datei direkt aufgerufen wird
defined('_JEXEC') or die('Restricted access');
 
?>
<dl>
<?php
 
// $users durchlaufen und jeweils jeden User ausgeben
foreach ($users as $user) {
 
    // $params testen, ob der Username oder der Name ausgegeben werden soll
    if ($params->get('username') > 1) {
 
        // Username ausgeben
        echo '<dt>'.$user->get('username').'</dt>';
 
    }
    else {
 
        // Name ausgeben
        echo '<dt>'.$user->get('name').'</dt>';
 
    }
 
    // Letztes Datum, an dem der User eingeloggt war, ausgeben
    echo '<dd>'.JHTML::_('date', $user->get('lastvisitDate')).'</dd>';
 
}
?>
</dl>

[Bearbeiten] Referenz

[Bearbeiten] Sprachdateien

Damit die Beschreibungstexte des Moduls ordnungsgemäß übersetzt werden, müssen Sprachdateien erstellt werden. Es ist unbedingt notwendig, dass die Strings, welche links des Gleichheitszeichen (=) stehen in Großbuchstaben geschrieben werden. Folgendermaßen muss die Sprachdatei aufgebaut sein:

ZU ÜBERSETZENDER TEXT=Übersetzter Text

Außerdem müssen die Sprachdateien im UTF-8 Format gespeichert werden. Alle anderen Formate können zu Umlaut-Problemen führen.

[Bearbeiten] en-GB.mod_lastusers.ini

Dies ist die englische Sprachdatei, die die Beschreibungstexte aus der XML Datei übersetzt.

NUMBER USERS=Number Users
SET THE NUMBER OF USERS=Set the number of Users
SHOW USERNAME=Show Username
YES: SHOW USERNAME, NO: SHOW REAL NAME=Yes: show username, No: show real name

[Bearbeiten] de-DE.mod_lastusers.ini

Dies ist die deutsche Sprachdatei, die die Beschreibungstexte aus der XML Datei übersetzt.

NUMBER USERS=Anzahl User
SET THE NUMBER OF USERS=Die Anzahl der User
SHOW USERNAME=Zeige Username
YES: SHOW USERNAME, NO: SHOW REAL NAME=Ja: zeige Username, Nein: Zeige echten Namen

[Bearbeiten] index.html

Die index.html dient nur dazu, um einen direkten Aufruf der Ordner zu unterbinden.

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

[Bearbeiten] mod_lastusers.xml

Die XML Datei ist für die Installation und die Parameter verantwortlich. Praktischer weise kann man anstatt jede Datei einzeln anzugeben, Ordner definieren, die automatisch komplett installiert werden.

<?xml version="1.0" encoding="utf-8"?>
<install type="module" version="1.5.0">
    <name>Last Users</name>
    <author>Joomla!-nafu</author>
    <creationDate>June 2009</creationDate>
    <copyright>Copyright (C) Joomla!-nafu. All rights reserved.</copyright>
    <license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>
    <authorEmail>nafu@example.com</authorEmail>
    <authorUrl>www.joomla-nafu.de</authorUrl>
    <version>1.0.0</version>
    <description>Lists the logindate of the Last User</description>
    <files>
        <filename module="mod_lastusers">mod_lastusers.php</filename>
        <filename>helper.php</filename>
        <filename>index.html</filename>
        <folder>tmpl</folder>
    </files>
    <params>
        <param name="number_user" type="text" default="5" size="2" label="Number Users" description="Set the number of Users" />
        <param name="username" type="radio" default="1" label="Show Username" description="Yes: show username, No: show real name">
            <option value="1">Yes</option>
            <option value="0">No</option>
        </param>
    </params>
    <languages>
        <language tag="en-GB">en-GB.mod_lastusers.ini</language>
        <language tag="de-DE">de-DE.mod_lastusers.ini</language>
    </languages>
</install>

[Bearbeiten] Zusammenfassung

Nun müssen Sie alle Dateien zippen und können Ihr erstes selbstgemachtes Modul installieren. Achten Sie darauf, dass die Dateien folgende Struktur im ZIP einhalten:

File zip.png mod_lastusers.zip

|_ Folder blue.png tmpl
|_ File php.png default.php
|_ File html.png index.html
|_ File php.png mod_lastusers.php
|_ File xml.png mod_lastusers.xml
|_ File php.png helper.php
|_ File txt.png en-GB.mod_lastusers.ini
|_ File txt.png de-DE.mod_lastusers.ini
|_ File html.png index.html

[Bearbeiten] Siehe auch

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Sonstiges
Team Navigation
Werkzeuge