Formate
Formate sind dynamische Ausgabe-Templates die in der Programmiersprache PHP erstellt werden und auf einer Seite letztendlich HTML erzeugen. Zum grundsätzlichen Verständnis was Formate sind, empfehlen wir zuerst den Artikel Formate - die Grundlagen zu lesen.
Formate können von außen erhaltene Daten und Parameter übergeben bekommen und verarbeiten. Im Normalfall geschieht dies über entsprechend erstellte Platzhalterkonfigurationen. Das eCMS reicht die Daten oder Parameter entsprechend weiter, so dass Sie bei der Programmierung von Formaten zur Verfügung stehen.
Format-Objects sind von der Basisklasse ecms_formatObj abgeleitete PHP-Klassen. Der Klassen Namen wird als Format-Label verwendet und den Format-Label wird das Format innerhalb des eCMS adressiert. Die Formate werden auf der Festplatte speichert und liegen im Site Include-Verzeichnis "site_inc" im "lib_formatobject". Der Dateiname hat den folgenden Syntax:
<format_label>.class.php
Der einfachste Weg ein neues Format zu erstellen ist über den eCMS-Admin unter Komponenten > Formate.
Übergebene Daten stehen Ihnen im Methodenparameter der Methode generateContent unter dem Array-Schlüssel $params['data'] zur Verfügung. Auf die dem Format-Object übergebene Parameter können Sie über den Pointer $this->params zugreifen.
Ein Format-Object kann auf Standard-Methoden der Basisklasse zugreifen. Die wichtigstens Methoden sind __construct, generateContent , frm_catch und cmd_catch. Wenn Sie AJAX Anwendungen erstellen wollen, stehen Ihnen in der Basisklasse unter anderem die Methoden ajax_getActionURL und ajax_catchAction zur Verfügung.
Dies ist der Konstruktor der Klasse, der in einem Format-Object entsprechend überschrieben werden kann. Die Basisklasse ecms_formatObj erzeugt hier diverse Pointer auf Objekte.
Diese Methode erhält die eigentliche Ausgabe des Format-Objects. Sie muss in jedem Format-Object geschrieben werden, um eine Ausgabe auf der Website erzeugen zu können. Im Normalfall wird hier HTML erzeugt, welches beim Laden der Seite entsprechend ausgeliefert und dargestellt wird.
Die Rückgabe der Methode ist ein Array. Nachfolgend ist die Struktur des Rückgabe-Array beschrieben:
<?php [...] // Rückgabe-Array $R['src'] = '<!-- Your HTML content --> '; // Das HTML was ausgegeben werden soll. $R['status'] = true; // Status-Flag, im Normalfall auf <em>true </em>gesetzt $R['cache']['cacheable'] = true; // Cache-Aktivierung mit dem Wert <em>true</em> oder Deaktivierung mit <em>false</em> return $R; [...] ?>
Wenn Sie ein Formular programmieren wollen, wird diese Methode bei einem Submit des Formulares automatisch aufgerufen. Hier können Formularvalidierungen und Aktionen ausgeführt werden, die nach dem Absenden des Formulares ausgeführt werden sollen.
Die Methode wird zur Verarbeitung von GET-Kommandos verwendet. Sie wird angesteuert, wenn der Benutzer einen entsprechend konfigurierten Link angeklickt hat. Zur Erzeugung dieses Links benötigen Sie die Methode cmd_buildLink.
Wenn diesen Methoden können Sie AJAX-Urls erzeugen und entsprechend verarbeiten. Diese sind hilfreich wenn Sie AJAX Ausgaben programmieren wollen.
Beispiel 1: Ein einfaches Format-Object ist zum Beispiel die Ausgabe eines Textes, den ein Benutzer in einem einfachen Formular einträgt:
class mein_text_formular extends ecms_formatObj { public $mytext; /** * Konstruktor */ public function __construct($params) { parent::__construct($params); } /** * GenerateContent - Format-Ausgabe */ public function generateContent ($params) { $S = ''; // Text in Variable gefunden, Ausgabe des Textes // Achtung: In diesem Beispiel erfolgt keine Sicherheitsausgabe (Entfernen von "schädlichem Code", etc) $S = '<div class="meintext">'.$this->myText.'</div>'; } $S .= '<div class="meinformular"> ${eCMS-FORM}$ ${eCMS-INPUT-TEXT:meintext}$ ${eCMS-INPUT-SUBMIT:absenden}$ </form> </div>'; $R['src'] = $S; $R['status'] = true; $R['cache']['cacheable'] = false; return $R; } /** * Formularverarbeitung */ public function frm_catch($params) { // Button "absenden" geklickt. speichern des Inhalt des Text-Inputs auf Variable $this->myText = $params['meintext']; } } }
Beispiel 2: Sie haben eine Datenabfrage Daten an das Format-Object übergeben. Bei den Daten handelt es sich um einen einfachen Datensatz bestehend aus den Schlüsseln firstname und lastname mit entsprechenden Werten. Sie wollen diese Daten ausgeben und haben zur Hervorhebung noch den im Format-Object unterstützten Parameter style gesetzt.
class meine_datenausgabe extends ecms_formatObj { /** * Konstruktor */ public function __construct($params) { parent::__construct($params); } /** * GenerateContent - Format-Ausgabe */ public function generateContent ($params) { $S = ''; // Daten in $params['data'] sind wahrscheinlich vorhanden // Style-Wert findet sich in den Parametern wieder, also kann über $this->params['style'] darauf zugegriffen werden. $S = '<div class="name" style="'.$this->params['style'].'">Name: '.$params['data']['firstname'].' '.$params['data']['lastname'].'</div>'; } $R['src'] = $S; $R['status'] = true; // Die Ausgabe soll in den eCMS Cache geschrieben werden, wenn dieser aktiviert ist $R['cache']['cacheable'] = true; return $R; } }