Login
Neu hier? Registrieren.
Die MODx-Terminologie
Wie jedes System hat auch MODx eine eigene Terminologie, um einzelne Bestandteile zu beschreiben. Die Begriffe mögen anfangs etwas verwirrend sein, sind allerdings schnell erlernt. Wie nahezu jedes CMS ist MODx modular aufgebaut, die verschiedenen Komponenten sind je nach Funktionsweise folgendermaßen benannt: Template, Template Variablen, Snippets, Chunks, Plugins und Module.
Template
Ein Template bildet den grundsätzlichen Rahmen für die Website und die einzubindenden Inhalte. Hier wird das strukturelle (HTML-)Markup definiert, zusätzlich werden mit Hilfe von Platzhaltern Anweisungen definiert, wie und wo die dynamischen Inhalte eingebunden werden sollen.
Template Variablen
Eines der Killer-Features von MODx sind Template Variablen (TV genannt). Ein Dokument in MODx hat verschiedene Felder wie Titel, Alias, Langer Titel, Erstellungsdatum, Menütitel usw. Der eigentliche Content wird im Feld "content" gespeichert und mittels
[*content*]
im Template ausgegeben. Genauso kann jedes dieser Dokumentenfelder (genannt "document variables") an jeder Stelle im Template ausgegeben werden. Zum Beispiel liefert:
<strong>[*pagetitle*]</strong>
dieses Ergebnis: Die MODx-Terminologie. Ist klar, denn der Seitentitel dieser Seite heißt "Die MODx-Terminologie"
Soweit so gut. Der Clou an MODx ist nun, dass man beliebig viele dieser Variablen anlegen kann, deren Typ zusätzlich bestimmt werden kann. So kann ich eine TV "test" anlegen vom Typ "text". Diese TV kann ich platzieren wo ich möchte und in jedem einzelnen Dokument beliebig ändern. Möglich ist auch eine Vererbung innerhalb der Ordnerstruktur, so dass der Inhalt der TV vom darüberliegenden Dokument/Ordner geerbt wird. Dazu trägt man als Standardwert der TV einfach @inherit ein.
Aber zurück zu den TV-Typen. Neben einfachen Text-TVs können weitere Arten von Variablen angelegt werden, zum Beispiel Bilder, Links, Datum usw. Im Frontend können diese direkt geändert werden mittels Quickedit:
Einfach auf Inhalt->Titel klicken und schon kann der Titel des Dokuments geändert werden. Eigene angelegte TVs erscheinen auch in diesem Menü.
Möglich sind auch Auswahllisten. Dazu legt man z.B. einfach eine TV vom Typ "Checkbox an" und gibt mehrere Auswahlmöglichkeiten in der Form
Core-News||Intern||Downloads||Diskussion||Übersetzung||Dokumentation||Tutorial||Seitengalerie
an. Obiges Beispiel ist die Auswahl für die Schlagworte der Kategorie dieses Dokuments. Man sieht wohin das führt... Ich kann meine Dokumente on the fly verschlagworten, die Bearbeitung dieser Schlagwort-TV in diesem Dokument sieht zum Beispiel so aus:
Somit kann ich mit folgendem
[*kategorie-tag*]
folgende Ausgabe erreichen: Dokumentation,Tutorial
Damit nicht genug. Es ist auch möglich dynamische Auswahlen zu erzeugen mittels so genannter @bindings. Zum Beispiel könnte man als Auswahlmöglichkeit
@SELECT pagetitle,id FROM modx_site_content WHERE parent=1 AND published=1 ORDER by menuindex ASC
angeben. Was macht das? Ganz einfach... Es werden alle Titel von Dokumenten ausgelesen, die als übergeordnetes Dokument (parent) das Dokument mit der id 1 haben, veröffentlicht sind (published), das ganze sortiert nach Menüindex (menuindex). Ist im konkreten Fall der Ordner "Über MODx", in dem wir uns gerade befinden. Die TV-Bearbeitung sieht dann so aus:
Soweit zu den Template Variablen. Man kann erahnen wie flexibel mächtig dieses Instrument ist.
Snippets
Snippets sind letztlich includes von PHP-Fragmenten, die mittels
[[sippet_name]]
aufgerufen werden. Die meisten Erweiterungen von MODx sind Snippets, mit deren Hilfe neue Funktionen in MODx integriert werden. Zum Beipiel Galerien, Formularverarbeitungen, Menüs, Auflistungen etc. werden mit Hilfe von Snippets generiert. Das eigentliche Snippet kann natürlich auch auf andere Datenquellen mittels PHP-include zurückgreifen. Somit es möglich naheu jedes PHP-Script in MODx zu integrieren. Dabei ist natürlich immer darauf zu achten, dass Variablen nicht doppelt belegt sind usw. Das meist benutzte Snippet ist Wayfinder, das die Menülisten generiert. Der Aufruf
[[Wayfinder?startID=`1`]]
zum Beispiel generiert eine einfache Liste mit Links auf alle Dokumente mit übergeordnetem Dokument mit id 1. Hier das Ergebnis:
Wie man im Quelltext erkennen kann wird eine einfache Liste erzeugt, die die generellen CSS-Eigenschaften des Dokuments übernimmt. Snippet-Aufrufe können durch Parameter erweitert werden, die wiederum ein flexibles Anpassen des Outputs ermöglichen (durch Angeben eigener Templates etc.). Mehr dazu in der Dokumentation.
Chunks
Chunks sind HTML-Fragmente die eingebunden werden können. Oft werden Chunks für individuelle Templates verwendet, sie können aber auch wiederum Snippets aufrufen. Der Zusammenhang von Snippets und Chunks kann am Beispiel Wayfinder gut gezeigt werden. Der Aufruf für das Menü auf dieser Seite ist zum Beispiel:
[!Wayfinder?startId=`[[UltimateParent]]` &outerTpl=`tpl_submenu_outer` &rowTpl=`tpl_submenu_row` &jsTpl=`test` &innerTpl=`tpl_submenu_inner` &hereTpl=`tpl_submenu_here`!]
Die Angaben outerTpl und rowTpl zum Beispiel bewirken das Aufrufen der Chunks tpl_submenu_outer und tpl_submenu_row die für die Formatierung des Menüs zuständig sind. Man sieht an den anderen Parametern, dass viele Einstellungen vorgenommen werden können, zum Beispiel das laden externer Javascripts, aber auch das Aufrufen eines Snippets wie "UltimateParent", das als Ergebnis das oberste Dokument in der Hierarchie aufruft.
Mit Hilfe von Chunks kann man auch sein Template sehr übersichtlich halten. Zum Beispiel kann man einen Chunk "header" anlegen, in den man alle HTML-Head-Informationen auslagert, so dass man für alle Templates nur
{{header}}
einfügen muss. Eventuelle Änderungen am Head-Bereich bearbeitet man dann einfach in diesem Chunk.
Plugins
Plugins dienen der Verarbeitung des Inhalts bevor dieser zum Browser geschickt wird. Mit Hilfe von Plugins lassen sich zum Beispiel einfach Text-Ersetzungen vornehmen, aber auch komplexere Anwendungen wie der Editor zur Content-Bearbeitung werden durch plugins realisiert.
Module
Module sind Anwendungen für das MODx-Backend. Sie dienen der reinen Backend-Bearbeitung. Prominentes Beispiel ist der Doc Manager, mit dessen Hilfe schnell Änderungen wie Menüsortierungen, Template-Zuordnungen, Berechtigungen usw. für viele Dokumente auf einmal gemacht werden können.