Modulentwicklung für Contenido

Peter Beauvain
2007-06-24 22:46
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]
Durchschnittliche Bewertung: 3.96 (24 Abstimmungen)

Es ist möglich, diese FAQ zu kommentieren.