Plugin-HowTos

Datenbank-Abfragen durchführen

$myArray = $GLOBALS['DB']->executeQuery('SELECT * FROM `tkategorie` ', 2); 

Parameter für executeQuery:

    /**
     * executes query and returns different data back
     * @access public
     * @param string $stmt Statement which shall be executed
     * @param number $return what should be returned.
     * 1  - single fetched object
     * 2  - array of fetched objects
     * 3  - affected rows
     * 8  -  fetched assoc array
     * 9  - array of fetched assoc arrays
     * 10 - result of querysingle
     * @param number $echo print current stmt
     * @param bool $bExecuteHook should function executeHook be executed
     * @return object / array / affected rows (depending on return-param). False, if query fails.
     */
    function executeQuery ($stmt, $return, $echo=0, $bExecuteHook=true)

Elemente im xHTML-DOM einfügen oder entfernen

Mit phpQuery (Abkürzung pq) können Sie über den Hook 140 das xHTML Ausgabedokument manipulieren. Die Funktion pq(SELEKTOR); liefert ein phpQuery Objekt, mit dem das mit SELEKTOR ausgewählte xHTML-Element verändert werden kann.
Die pq(); Funktion ist äquivalent zur jQuery $(); Funktion, daher lassen sich die meisten Funktionen wie z.B. append, prepend, remove etc auf ein pq-Objekt anwenden.
Im pq-Handbuch finden Sie eine detaillierte Funktionsreferenz.

Beispiele zu pq finden Sie u.a. unter Templateanpassung via Plugin.

Neues Plugin auf Basis des JTL-Kickstarters

Installation des JTL-Kickstarters

Installieren Sie den JTL-Kickstarter wie Sie es bereits von anderen Plugins gewohnt sind. Sofern nicht während des Installations-Vorgangs geschehen muss das Plugin noch aktiviert werden.

Grundeinstellungen vornehmen

Rufen Sie das "JTL-Kickstarter"-Plugin auf und klicken hier auf den Reiter "Einstellungen". Hier haben Sie die Möglichkeit grundlegende Informationen (einen Link zur Seite des Plugin-Erstellers, den Namen des Plugin-Erstellers und, ganz wichtig, der Ordner in welchem Die erstellten Plugins gespeichert werden sollen) festzulegen die von jedem Plugin benötigt werden. Der Speicher-Ordner muss den Dateirechten "777" versehen werden. Anderenfalls kann kein Plugin durch den Kickstarter erstellt werden.

Sammeln der Plugin-Informationen

Sind die Grundeinstellungen gesetzt so kann mit dem eigentlichen Vorgang der Plugin-Erstellung begonnen werden. Hierzu können im Reiter "Neues Plugin erstellen" die benötigten Punkte Schritt für Schritt durchgegangen werden. Den ersten Schritt stellt hierbei stets der Punkt "Allgemeine Daten" dar. Hier werden die Grundinformationen des neuen Plugins gesammelt. Wichtige Pflichtangaben sind hierbei der Plugin-Name, die eindeutige Plugin-ID sowie die Shop-Version ab der das Plugin nutzbar ist. Ohne die Angabe dieser Daten kann die Plugin-Erstellung nicht erfolgrecih gestartet werden.

Sollen Hooks genutzt werden um eigenen Code auszuführen so kann unter dem Punkt "Hooks" eine beliebige Anzahl der Hooks hinzugefügt werden. Hier wird in der Dropdown-Liste der gewünschte Hook ausgewählt und unter "Auszuführende Datei" die jeweils auszuführende PHP-Datei angegeben.

Wurden alle Bereiche die für das gewünschte Plugin benötigt werden ausgefüllt kann auf den Button "Plugin ertellen" geklickt werden. Wurde die Erstellung des Plugins ohne Fehler ausgeführt wird eine entsprechende positive Rückmeldung ausgegeben.

War der Vorgang erfolgreich kann der Ordner des Plugins aus dem zuvor eingestellten Export-Ordner kopiert werden.

Anzeige von vorhandenen Plugins

Unter dem Punkt "Vorhandene Plugins" werden alle im Export-Ordner vorhandenen Plugin-Ordner angezeigt. Hier können vorhandene Plugin-Ordner per Mausklick gelöscht werden.

Download des "JTL-Kickstarter"

Der "JTL-Kickstarter" kann unter Plugin-Beispiele heruntergeladen werden.

HowTo Log Errors / Notices / Debug-Messages

Ab JTL-Shop3.10 wurde die Klasse Jtllog eingeführt. Die Systemlogs werden im Admin-Backend unter Admin->Systemlog übersichtlich dargestellt:

Systemlog Screenshot

Plugins können dieses Log-System folgendermaßen nutzen:

require_once(PFAD_ROOT . PFAD_CLASSES . "class.JTL-Shop.Jtllog.php");
// Logging
Jtllog::writeLog('Überprüfung des Plugin-Lizenzschlüssels fehlgeschlagen! Fehlercode '.$meinPluginFehlercode, JTLLOG_LEVEL_ERROR);

Die folgenden Log-Level stehen zur Verfügung:

Log-Level Beschreibung
JTLLOG_LEVEL_ERRROR (1) Unerwartete Fehler, die z.B. durch Server-Konfiguration behoben werden müssen
JTLLOG_LEVEL_NOTICE (2) Hinweise und Warnungen, wenn ein Problem identifiziert wird, aber der Programmablauf nicht weiter gestört ist.
JTLLOG_LEVEL_DEBUG (3) Debug-Informationen z.B. var_dump von Variablen, die bei Problemanalyse hilfreich sind.

KCFinder

Im JTL-Shop3 wird zur Dateiverwaltung der KCFinder verwendet. Diesen können Sie auch einfach in Ihrem Plugin verwenden. Das ganze ist relativ simpel und lässt sich in ein paar einfachen Schritten erledigen. Zuerst müssen Sie in dem Skript Ihres Plugins den Pfad zum KCFinder an Ihr Template zuweisen, dafür können Sie die Konstante PFAD_KCFINDER verwenden:

$smarty->assign('PFAD_KCFINDER', PFAD_KCFINDER);

Als nächstes müssen Sie diese Smarty Variable nun in Ihrem Template ausgeben:

<div class="hidden kcfinder_path">{$PFAD_KCFINDER}</div>

Ebenfalls benötigen Sie noch einen Button oder einen Link über den Sie den KCFinder öffnen:

<a href="#" class="open_kcfinder">KCFinder öffnen</a>

Nun müssen wir nur noch auf das HTML Element das den KCFinder öffnen soll ein Klick Event legen und den KCFinder aufrufen:

    $('a.open_kcfinder').click(function(event) {
        // default event verhindern
        event.preventDefault();
        // html element mit dem pfad auslesen
        var kcfinder_path = $('.kcfinder_path').html();

        // kcfinder objekt mit dem späteren callback
        window.KCFinder = {
            // in url steht nur die url zu der ausgewählten datei
            callBack: function(url) {
                // kcfinder schliessen
                kcFinder.close();
            }
        };

        // kcfinder objekt, einstellungen zum kcfinder popup
        var kcFinder = window.open(kcfinder_path + 'browse.php?type=Bilder&lang=de', 'kcfinder_textbox',
                'status=0, toolbar=0, location=0, menubar=0, directories=0, ' +
                'resizable=1, scrollbars=0, width=800, height=600,'
        );
    });

kickstarter_doku_1.jpg (17,385 KB) M. Besancon, 29.04.2011 09:16

kickstarter_doku_2.jpg (27,52 KB) M. Besancon, 29.04.2011 09:16

kickstarter_doku_3.jpg (25,084 KB) M. Besancon, 29.04.2011 09:16

kickstarter_doku_4.jpg (23,725 KB) M. Besancon, 29.04.2011 09:16

kickstarter_doku_6.jpg (16,47 KB) M. Besancon, 29.04.2011 09:16

systemlog_screenshot.png - Systemlog Screenshot (20,083 KB) D. Hannappel, 03.05.2011 10:58