Aufbau eines Plugins

Die Dateisystemstruktur eines Plugins


im Ordner plugins

  • Pluginname einen Ordner mit einem eindeutigen Namen
    • index.php
    • plugin.css (Optional, wird automatisch geladen)

Inhalt der index.php


Das sollte zur Sicherheit in der ersten Zeile stehen.

<?php if(!defined('IS_CMS')) die();

Das Plugin mit einem eindeutigen Pluginnamen ohne Sonderzeichen

class Pluginname extends Plugin {


    Der Plugin Inhalt
    function getContent( $value ) {
        return INHALT;
    }

    Die Plugin Settings
    function getConfig() {
        return $config;
    }

    Die Plugin Default Settings
    function getDefaultSettings() {
        return array("Parameternamen" => "Parameter");
    }

    Die Plugin Infos
    function getInfo() {
        return array(
            Plugin Name + Version (string) ,
            Benötigte moziloCMS Version. (string) ,
            Kurzbeschreibung für das Blaue "i" (string) ,
            Name des Autors (string) ,
            Download URL (string) oder (array) URL => Link Text ,
            Plugin Platzhalter für die Selectbox in der Editieransicht (array) Platzhalter => Titel
        );
    }
}
?>

Die getContent( $value )


Der Inhalt von $value kann sein:

  • Die Parameter als String.
  • false Beim Aufruf ohne Parameter.
  • plugin_first.

Die Plugin eigenen Funktionen und Parameter werden hier beschrieben

Im Admin Fenster stehen diese zusätzlichen Konstanten und Variabeln zur Verfügung

    PLUGINADMIN der Pluginname
    PLUGINADMIN_GET_URL die URL inklusive aller Parameter
    $PLUGIN_ADMIN_ADD_HEAD ein Array aus Inhalt der in den <HEAD> soll.
         Achtung es darf immer nur ein Eintrag Hinzugefügt werden.
    $plugin->settings die Plugin Konfiguration

Die getDefaultSettings()


Ein Array mit den Default Konfigurationsparametern die gesetzt werden beim ersten Aufruf des Plugins (wenn die plugin.conf.php noch nicht existiert).

Die getConfig()


Die Konfiguration setzt sich zusammen aus einem Array mit dem Parameternamen und dem Element als Array.

Jedes Element wird als Liste angezeigt, links die description und rechts das Formularelement.
Wenn ein Element den Eintrag template hat, dann wird der darin enthaltene HTML-Code in der Liste benutzt.

Es gibt noch eine Alternative für die Angezeige.

Mit Anzeige Element --template~~ hat man Zugriff auf alle Konfigurationsparameter und kann sie in eigenem HTML-Code anzeigen.

Eine Liste der verfügbaren Platzhalter wird im Admin->Plugins->MeinPlugin aufgelistet, wenn der Inhalt von template oder --template~~ = template_test ist.

Der Parameter plugin_first bewirkt, dass das Plugin ohne seinen Plathalter zusätzlich am Anfang der index.php mit getContent("plugin_first") aufgerufen wird.

Gesetzt wird er am Anfang der getConfig() mit:

    if(IS_ADMIN and $this->settings->get("plugin_first") !== "true")
        $this->settings->set("plugin_first","true");


Ab moziloCMS Revision 17 gibt es den Parameter plugin_replace_catpagefile.

Normalerweise wird beim Umbenennen einer Kategorie oder Inhaltsseite in der plugin.conf.php diese mit geändert.

Mit plugin_replace_catpagefile kann ein Ordner angegeben werden in dem zusätzlich gesucht wird.
Folgende relativen Angaben sind erlaubt:

    Name des Ordners/* alle Dateien in diesem Ordner
    Name des Ordners/*_db.php alle Dateien in diesem Ordner die mit _db.php aufhören
    Name des Ordners/db.php nur diese Datei
    db.php nur diese Datei

Gesetzt wird er am Anfang der getConfig() mit:

    if(IS_ADMIN and !$this->settings->get("plugin_replace_catpagefile"))
        $this->settings->set("plugin_replace_catpagefile","
Ordner oder Datei");

Verfügbare Formular Elemente:

Einzeiliger Text

    $config["Parameternamen"] = array(
        "type" => "text", (Pflicht)
        "description" => "Bitte Wert eingeben", (Pflicht)
        "maxlength" => "100", (Optional)
        "size" => "30", (Optional)
        "regex" => "REGEX", (Optional)
        "regex_error" => "REGEX Fehler Meldung", (Optional)
        "template" => "Eigenes Template" (Optional)
    );

Mehrzeiliger Text

    $config["Parameternamen"] = array(
        "type" => "textarea", (Pflicht)
        "cols" => "30", (Pflicht)
        "rows" => "5", (Pflicht)
        "description" => "Bitte Text eingeben", (Pflicht)
        "regex" => "REGEX", (Optional)
        "regex_error" => "REGEX Fehler Meldung", (Optional)
        "template" => "Eigenes Template" (Optional)
    );

Password

    $config["Parameternamen"] = array(
        "type" => "password", (Pflicht)
        "saveasmd5" => "true", (Pflicht)
        "description" => "Bitte Passwort eingeben", (Pflicht)
        "regex" => "REGEX", (Pflicht)
        "regex_error" => "REGEX Fehler Meldung", (Optional)
        "maxlength" => "100", (Optional)
        "size" => "30", (Optional)
        "template" => "Eigenes Template" (Optional)
    );

Checkbox

    $config["Parameternamen"] = array(
        "type" => "checkbox", (Pflicht)
        "description" => "Ja oder nein?", (Pflicht)
        "template" => "Eigenes Template" (Optional)
    );

Radio

    $config["Parameternamen"] = array(
        "type" => "radio", (Pflicht)
        "description" => "Welche Farbe?", (Pflicht)
        "descriptions" => (Pflicht)
            "blau" wird sowohl angezeigt als auch in die plugin.conf.php gespeichert
            array(
                "blau",
                "rot",
                "gruen"
            ),
            oder so angezeigt wird "Blau", in die plugin.conf.php gespeichert wird "blau"
            array(
                "blau" => "Blau",
                "rot" => "Rot",
                "gruen" => "Grün"
            ),
        "template" => "Eigenes Template" (Optional)
    );

Select

    $config["Parameternamen"] = array(
        "type" => "select", (Pflicht)
        "description" => "Ich mache Urlaub in...", (Pflicht)
        "descriptions" => (Pflicht)
            "Australien" wird sowohl angezeigt als auch in die plugin.conf.php gespeichert
            array(
                "Australien",
                "Venezuela",
                "Chemnitz"
                )
            oder so angezeigt wird "Australien", in die plugin.conf.php gespeichert wird "aus"
            array(
                "aus" => "Australien",
                "ven" => "Venezuela",
                "che" => "Chemnitz"
                )
        "multiple" => "true", (Optional)
        "template" => "Eigenes Template" (Optional)
    );

Admin Fenster

    $config["--admin~~"] = array(
        "buttontext" => "Butten Text", (Pflicht)
        "description" => "Beschreibung eigenes Fenster", (Pflicht)
        "datei_admin" =>  (Pflicht)
            Die index.php des Plugins wird eingebunden und die Ausgabe erfolgt mit return getContent("")
            "index.php"
            oder eine Datei Ungleich index.php dann wird der Inhalt mit return require_once geöffnet
            "admin/index.php"
    );

Template Verwenden

$config["--template~~"] = "Eigenes Template für alle Konfparameter"