Joomla! Programmierung/Programmierung/Module
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
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:
- |_
tmpl
- |_
mod_lastusers.php
- |_
mod_lastusers.xml
- |_
helper.php
- |_
en-GB.mod_lastusers.ini
- |_
de-DE.mod_lastusers.ini
- |_
index.html