Development: Contenido

ID #1061

Modulentwicklung für Contenido

Einleitung
Im Grunde genommen ist das Schreiben von Modulen für Contenido genauso einfach wie das programmieren von Standard PHP Code. Dieser Text, zeigt Ihnen wie Sie Ihren Code mit den Contenido CMS Merkmalen kombinieren können.

Was bedeutet INPUT und OUTPUT, und wie sind Module überhaupt definiert?

Ein Modul ist nichts anderes als eine Funktion (geschrieben in PHP Code) die über ein Template einer Webseite zugewiesen wird. Siehe Abb.:



Ein Layout beinhaltet Platzhalter für Module (CMS_CONTAINER[1]...[n]). Diesen Containern werden über ein Template verschiedene Module zugewiesen. Dadurch wird der OUTPUT Teil des Moduls an der richtigen Stelle des Layouts platziert. Der INPUT Teil des Moduls ist nicht relevant für die Ausgabe eines Moduls. Wenn ein INPUT für ein Modul vorhanden ist, wird dieser im Template konfiguriert, und passt z.B. Variablen für Funktionen im OUTPUT Teil des Moduls an.

Konfiguration von Modulen

Um Module "modularer" zu gestalten, können diese konfiguriert werden, aber wie funktioniert das?
Die Konfigurationsdaten werden transparent gespeichert, man muss sich also keine Sorgen machen, dass die Daten des INPUT Teils eines Moduls auch im OUTPUT Teil des zugehörigen Moduls zur Verwendung kommen.

Betrachten wir kurz das folgende Beispiel eines INPUT Teils:
echo "<>
<>
<>
<>
<>
Test CMS_VAR[1]\ "value=\"CMS_VALUE[1]\">
";

CMS_VAR[x] ist die Variable zum Empfangen des gewünschten Wertes und
CMS_VALUE[x] ist der augenblickliche Wert, welcher dann auch im Modul OUTPUT weiterverarbeitet werden kann:
echo "CMS_VALUE[1]";
Um Probleme zu vermeiden, sollten Sie auf folgende Dinge achten:
  • Speichern Sie ihre Konfiguration immer in lokalen Variablen (z.B. $foo = "CMS_VALUE[1]";)
  • Benutzen Sie immer Anführungszeichen. Behandeln Sie CMS_VALUE und CMS_VAR wie Text.('CMS_VALUE' oder "CMS_VALUE")
  • PHP unterstützt "transparent type switching" sodass das folgende Beispiel funktioniert:
    $foo = "CMS_VALUE[1]";
    if ($foo == 1)
    {
    echo "Worked";
    }


:!: Wichtige System Funktionen:
Wenn Sie fortgeschrittene Module entwickeln möchten, und Sie mit Contenido interagieren wollen finden Sie hier einige Objekte und Funktionen zur Unterstützung.

DB_Contenido
Das PHPLib DB-Objekt.
Beispiel:
$mydb = new DB_Contenido;
$mydb->query("SELECT * FROM test");

Eine Referenz finden Sie hier:
http://www.sanisoft.com/phplib/manual/DB_SqlMethods.php#DB_SqlMethodsInt

Sie sollten immer $cfg["tab"][*] benutzen um auf Contenido Tabellen zuzugreifen.
Wichtig: benutzen Sie möglichst nie die Variable $db in ihren Modulen. Verwenden Sie bitte eigene Variablen Namen.

$sess
Die Aktuelle Session, nützliche Variable:
$sess->id (current session ID)

$auth
Zugangsinformationen, nützliche Variablen:
$auth->auth["uid"] (current user ID)
$auth->auth["uname"] (current user name)

Neu: Seit dem 19.11.2004 gibt es im Forum einen hervorragenden Thread, bei dem Emergence anhand der Contenido Service-Navigation die Modul-Entwicklung komplett durchgesprochen hat, mit vielen wertvollen Tips und Tricks.
Er hat dabei auch besonders die Interaktion von PHP und Contenido-Datenbank angesprochen.

[lart=102 lang=de]

Tags: -

Verwandte Artikel:

Letzte Änderung des Artikels: 2007-06-24 22:46
Autor: Peter Beauvain
Revision: 1.0

Digg it! Share on Facebook Artikel ausdrucken Artikel weiterempfehlen Als PDF-Datei anzeigen
Übersetzungsvorschlag für Übersetzungsvorschlag für
Bewertung der Nützlichkeit dieses Artikels:

Durchschnittliche Bewertung: 3.96 (24 Abstimmungen)

vollkommen überflüssig 1 2 3 4 5 sehr wertvoll

Es ist möglich, diesen Artikel zu kommentieren.

Kommentar von smily:
endlich mal was nützliches!<br /> großes lob Peter, jedoch gerade wo es interesant wird hörst du auf.<br /> jatzt wo wir wissen wie die eingabe vars festgelegt sind und wie man die in ausgabe-bereich benutzt, wäre doch schön zu wissen wie man die vars aus ausgabe-bereich (z.B. eingabe in ein input feld) in db speichert und wieder aufruft und wie harmoniert das ganze dan mit rest der contenido.
Added at: 2007-09-02 09:48

Tags

Sticky FAQs