Eigene Templates erstellen

Die Programmierung eigener Templates ist einfach. Es stehen mehrere Optionen der Anbindung an eine SQL-Datenquelle zur Verfügung. Die gewählten Daten stehen direkt im Backend zur Verfügung und können auch von Usern ohne Programmierkenntnisse problemlos bearbeitet werden.

Zum besseren Verständnis der Erstellung eigener Templates wird im Folgenden der Arbeitsablauf skizziert.

1.ProgrammierungDie Programmierung erfolgt grundsätzlich auf dem Client-Rechner in einer textbasierten Entwicklungsumgebung wie zum Beispiel ECLIPSE. Anschließend wird das Template per FTP in das entsprechende Template-Verzeichnis des Servers kopiert. (Für den Fall dass ein Projekt verschiedene Themes verwendet muss das fertige Template am Ende auch in die entsprechenden Unterordner der anderen Themes kopiert werden.)2.ImportDas Template wird im Template-Bereich des Backends in das System importiert. Zum Testen muss es dazu natürlich nicht "fertig" sein. Bei Content-Templates gibt es die Wahl zwischen den Standard-Datenfeldern oder der Nutzung eigener SQL-Tabellen als Datenquelle. Im Falle eigener SQL-Tabellen müssen diese per phpMyAdmin erstellt und ins System importiert werden bevor sie als Datenquelle zur Verfügung stehen.
3.TestingZum Testen muss das Template im Backend einem Navigationspunkt zugeordnet werden. Im Falle von Content-Elementen wird das Template innerhalb der Navigation durch Click auf das Content-Icon einer Seite hinzu gefügt. Während des Testings empfiehlt sich die Nutzung der Option Admin Only sowie die Verwendung des Debug Modus.

HTML, XML, PDF, CSS, ...

Es lässt sich jede Art von Dateiformat erzeugen, selbst dynamische JPGs oder CSS-Dateien sind möglich. Welches Dateiformat ein Template generiert hängt von zwei Faktoren ab: der Datei-Endung und dem MIME-Type. Der MIME-Type wird automatisch gesetzt, kann jedoch durch eine API Methode kontrolliert werden. Die Datei-Endung wird einfach durch das Prefix bei der Benennung des Seiten-Templates bestimmt. Folgende Beispiele verdeutlichen den Zusammenhang zwischen Prefix und Dateiformat.

Prefix
Beschreibung
html_page.phpEin Seiten-Template mit dem Prefix html_ erzeugt eine HTML-Datei. Ob die Datei-Endung .html genutzt oder weggelassen wird ist abhängig von der Konfiguration des URL Routings.
json_example.phpDynamische JSON Dateien sind hilfreich bei der frontend-seitigen Generierung von Content via Javascript. Je nach Art und Aufbau des Templates können die zugrunde liegenden Daten ohne jegliche Programmierkenntnisse im Backend geändert werden.
xml_output.phpEin Template mit dem Prefix xml_ generiert eine Seite mit der Endung .xml. Bei allen Dateiformaten ist natürlich auch auf die korrekte Formatierung der Daten innerhalb der Templates zu achten!!

Bei der Programmierung muss grundsätzlich unterschieden werden zwischen Seiten-Templates und Content-Templates. Der Aufbau und die Optionen bei der Verwendung unterschiedlicher Setups sind ausführlich im Developer's Guide beschrieben.

Seiten-Templates

Seiten-Templates stellen den äußeren Rahmen für Content-Templates dar. Ein Seiten-Template kann ja nach Bedarf in mehrere Bereiche unterteilt werden, zum Beispiel: Bühne, Content-Bereich und Marginal-Spalte. Für jeden Bereich können dann wiederum eigene Content-Templates erstellt werden. Der Content der einzelnen Bereiche lässt sich im Backend pflegen und bei Bedarf auch via AJAX nachladen. Der Aufbau von Seiten-Templates wird detailiert im Developer's Guide beschrieben. Seiten-Templates können über unterschiedliche Eigenschaften verfügen die in Form von Ansichten im Backend definiert werden. Für ein Seiten-Template können mehrere Ansichten gleichzeitig aktiv sein.

Content-Templates

Content-Templates besitzen im Gegensatz zu Seiten-Templates eine Datenquelle und stellen die eigentlichen Content-Elemente einer Seite dar. Das kann ein Textblock sein, eine Galerie oder eine Reihe von Diagrammen. Der Content lässt sich je nach Art und Aufbau des Templates ohne Programmierkenntnisse im Backend pflegen. Ebenso wie bei den Seiten-Templates gibt es keine Beschränkung was den Inhalt des Templates betrifft. Ein Content-Template muss einem Bereich zugeordnet werden. Auch hier lassen sich mehrere Ansichten definieren, von denen aber nur eine Ansicht zur Zeit aktiv sein.

CSS und Javascript

Bei der Programmierung von HTML-Seiten empfehlen wir, Javascript und CSS-Styles innerhalb des jeweiligen Templates zu definieren. Das erleichtert die Fehlersuche, die Pflege und auch die Wiederverwendbarkeit der Templates da alle benötigten Resourcen sich in einer Datei befinden. Die Trennung von Inhalt und Design bleibt trotzdem gewahrt, da alle CSS-Styles sowie weitere Dateien über API Methoden gleich am Anfang des jeweiligen Templates eingebunden werden können.

Alle Seiten-Templates müssen in Bereiche unterteilt werden, um die Daten über das Backend pflegen zu können. Das kann z.B. ein Content-Bereich, eine Marginalspalte und ein Footer sein, oftmals verfügen Templates aber auch nur über einen einzigen Content-Bereich. Die Definition der Bereiche erfolgt im Backend innerhalb der Template-Gruppe. Bei der Programmierung wird innerhalb der Templates dann auf die unterschiedlichen Bereiche zugegriffen. Die entsprechende API Methode sowie weitere Möglichkeiten der Nutzung von Templates werden im Developer's Guide beschrieben.

Ansichten ermöglichen es dem User, das Aussehen oder die Funktionsweise einer Seite oder eines Content-Elements im Backend zu beinflussen. Für ein Content-Template kann das beispielsweise die Option Bild links oder Bild rechts sein. Zu dem Zweck werden für ein Template im Backend mehrere Ansichten definiert, die dann bei der Programmierung abgefragt und entsprechend verarbeitet werden. Bei der Verwendung des Templates innerhalb der Navigation stehen die Ansichten automatisch zur Auswahl. Für Seiten-Templates können mehrere Ansichten gleichzeitig aktiviert werden, für Content-Templates kann nur eine einzige Ansicht zur Zeit gewählt werden. Zur Verwendung von VIEWS bei der Programmierung existiert eine API Methode.

Für den Fall dass ein Content-Template weitere Ansichtsoptionen benötigt gibt es einen Workaround: als Datenquelle des Templates wird eine eigene SQL-Tabelle verwendet. Diese kann dann beliebig viele Eigenschaften enthalten.

Content-Templates lassen sich direkt mit der Datenbank verknüpfen. Die gewählten Datensätze stehen automatisch im Backend zur Bearbeitung zur Verfügung. Selbst bei komplexen Templates lassen sich die Daten von Usern ohne Programmierkenntnisse ohne Schwierigkeiten bearbeiten. Zur Abfrage der Daten bei der Programmierung der Templates steht mehrere API Methoden zur Verfügung. Grundsätzlich bestehen zwei Möglichkeiten, ein Template mit Daten zu verknüpfen: Standard-Datenfelder oder die Nutzung eigener SQL-Tabellen. In beiden Fällen kann das Template entweder einen oder mehrere Datensätze besitzen. Die Konfiguration der Datenanbindung geschieht beim Import des Templates.

Nutzung eigener SQL-Tabellen

Es kann jede beliebige SQL-Tabelle mit einen Content-Template verbunden werden. Dazu müssen die gewünschten Tabellen in das System importiert werden und stehen dann automatisch als Datenquelle für das Template zur Verfügung. Die Tabellen müssen sich dazu nicht einmal in der gleichen Datenbank befinden wie die System-Datenbank. Es ist also auch möglich, Tabellen anderer Content Management System mit einem Template zu verbinden und die Daten direkt im Backend zu bearbeiten.

Standard-Datenfelder

Die Nutzung der Standard-Datenfelder ist die einfachere Möglichkeit, ein Template mit Daten zu versorgen. In dem Fall stehen immer folgende Optionen zur Verfügung aus denen die benötigten Felder gewählt werden können. Im Gegensatz zur Nutzung eigener SQL-Tabellen lässt sich die Konfiguration der Datenfelder hier nicht ändern.

Datenfeld
Beschreibung
HeadlineEine Überschriften-Zeile
SublineEine Subline als Ergänzung der Headline
CopytextEin Textfeld mit einem HTML-Editor
ImageEin Upload-Feld für eine Grafik-Datei. Die hochgeladene Datei wird im dafür vorgesehenen Daten-Verzeichnis abgelegt welches mit einer eigenen API Methode bei der Programmierung abgefragt werden kann.
UploadEin beliebiges Upload-Feld. Die Datei wird im gleichen Verzeichnis abgelegt wie beim Image-Feld.
CaptionEine Möglichkeit, den Ankertext eines Links im Backend zu beeinflussen.
InternEin projekt-interner Link
ExternEine Verlinkung auf eine externe Seite