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.

mod_lastusers.php[Bearbeiten]

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'));
 
?>

Referenz[Bearbeiten]

helper.php[Bearbeiten]

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;
 
    }
 
}
 
?>

Referenz[Bearbeiten]

tmpl/default.php[Bearbeiten]

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>

Referenz[Bearbeiten]

Sprachdateien[Bearbeiten]

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.

en-GB.mod_lastusers.ini[Bearbeiten]

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


en-GB.mod_lastusers.sys.ini[Bearbeiten]

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

noch leer


de-DE.mod_lastusers.ini[Bearbeiten]

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

de-DE.mod_lastusers.sys.ini[Bearbeiten]

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

 

index.html[Bearbeiten]

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

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

mod_lastusers.xml[Bearbeiten]

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"?>
<extension
	type="module"
	version="2.5"
	client="site"
	method="upgrade">
 
    <name>Last Users</name>
    <author>Joomla!-nafu</author>
    <creationDate>Januar 2013</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>
 
    <languages>
		<language tag="en-GB">en-GB.mod_lastusers.ini</language>
		<language tag="en-GB">en-GB.mod_lastusers.sys.ini</language>
		<language tag="de-DE">de-DE.mod_lastusers.ini</language>
		<language tag="de-DE">de-DE.mod_lastusers.sys.ini</language>
    </languages>
 
	<help key="JHELP_EXTENSIONS_MODULE_MANAGER_LASTUSERS" />
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="shownumber"
					type="text"
					default="5"
					label="SHOW USERNAME"
					description="YES: SHOW USERNAME, NO: SHOW REAL NAME">
				</field>
 
				<field
                                         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>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>

Zusammenfassung[Bearbeiten]

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_lastuser.sys.ini
|_ File txt.png en-GB.mod_lastusers.ini
|_ File txt.png de-DE.mod_lastuser.sys.ini
|_ File txt.png de-DE.mod_lastusers.ini
|_ File html.png index.html

Siehe auch[Bearbeiten]