XIST4C - Content Management System
Einfachheit erleben - Komplexität steuern.
Zurück zur Startseite
Zurück zur Startseite
XIST4C - Content Management SystemNautilus
Homepage XIST4C Deutsch> News
Barrierefreie Version ladenAlle Links unterstreichenDruckansichtEmpfehlung versenden

Template System UL4 vs. Fluid - modern, intuitiv und flexibel

In dieser News geben wir Ihnen einen Einblick in eine aktuelle technische Entwicklung bei LivingLogic. Im Fokus steht das Template System UL4 ("Universal LivingLogic Layout Language"). Die Informationen richten sich an Template-Entwickler in Agenturen und bei Kunden, die Templates eigenständig anpassen möchten.

Wie wird eine Template-Anpassung künftig beim Content Management System XIST4C funktionieren? Zu dieser Frage werden wir Stellung beziehen. Besonderer Wert gelegt wird auch auf Analogien und Unterschiede zur im Entstehen begriffenen Version 5 des Content Management Systems Typo3 und insbesondere zur dort genutzten Template Engine Fluid.

UL4, ein plattformunabhängiges Template System — durch Bytecode

Der Traum der Web-Agenturen: Es wird nur eine Templatesprache benötigt, um Templates für verschiedene Plattformen zu erstellen. Dahinter können dann alle gängigen Webtechnologien (php, JSP, Python, ...) liegen.

Es gibt eine Vielfalt an Template Systemen. Wir greifen drei heraus: Fluid, vLIB und GRAILS. Allen ist gemeinsam, dass sie für genau eine Plattform geschrieben wurden. Bei der Entscheidung, welches Template System LivingLogic künftig benutzen wird, hat uns kein existierendes überzeugt. Wir haben uns deshalb entschieden, das Template System UL4 als ein konsequent plattformunabhängiges System selbst zu entwickeln. Grundlegender Ansatz: Analog zu Java oder C# wird mit UL4 ein Bytecode erzeugt, der dann auf verschiedenen Plattformen gerendert werden kann.

Aus Erfahrung mit Template Systemen seit mehr als 10 Jahren

XIST ist ein Python-basiertes Template System, dessen Entwicklung bereits vor mehr als 10 Jahren von LivingLogic begonnen wurde und mit der das Content Management XIST4C seit seiner ersten Version arbeitet. Die Software ist FLLOSS (Free LivingLogic Open Source Software). Die Erfahrung aus dieser — vereinzelt auch in Großunternehmen eigenständig eingesetzten — Technologie haben wir nun konsequent für das Template System UL4 genutzt.

XIST stellt natürlich nur einen möglichen Weg für die effiziente Erstellung von Templates für das Content Management System dar — wenn auch den präferierten. XIST ist darüber hinaus für viele weitere Aufgaben bestens geeignet — vegleichen Sie die zahlreichen Module, die es dafür gibt. Die Erstellung von XIST Templates erfordert gute bis sehr gute Kenntnisse der objektorientierten Programmiersprache Python, was für die reine Templateerstellung nicht erforderlich sein sollte. Diesen Nachteil merzen wir durch ein Template System UL4 nun aus. Denn es soll für Agenturen und IT-Systemhäuser bestens geeignet sein. Hervorzuheben ist, dass bereits jetzt das resultierende konkrete installierte (ausführbare) CMS XIST4C kein Python (XIST) mehr benötigt und auf einer Standardarchitektur läuft, beispielsweise auf Basis von Tomcat und Apache. Mittels XIST werden die Templates einmalig zu Java ServerPages transformiert — der View-Komponente des Content Management Systems.

Voller Zugriff auf die Templates

Vor diesem Hintergrund stellte sich die Frage, wie wir gerade Agenturen einen vollen Zugriff auf die Templates des Content Management Systems geben können. Wir haben uns entschlossen, ein Template System zu entwerfen und zu bauen, das analog zu existierenden Systemen funktioniert. Allerdings war es uns ein Anliegen, dass die Template Engine von der (Programmier-)Plattform unabhängig genutzt werden kann.

Ähnlich wie bei den Programmiersprachen Java und C# werden Templates zu einem Bytecode kompiliert. Dieser Bytecode kann dann auf verschiedenen Systemen mit unterschiedlichen "Renderern" ausgeführt werden. Die Renderer können mit unterschiedlichen Sprachen geschrieben sein (php, Java, Python, PLSQL, JavaScript, ...). Gegenwärtig gibt es Renderer in Python und Java sowie für JavaScript und — etwas exotischer — PLSQL.

Unterstützte Datentypen

Die folgenden Objekttypen sind als Übergabeparameter bei UL4 erlaubt: strings, integers, floats, date objects, color objects, The "null" value (None), boolean values (True and False), lists, dictionaries, templates. Diese Datentypen orientieren sich an dejenigen, die auch JSON unterstützt werden (mit Ausnahme von date, color und templates).

Bitte vergleichen Sie den folgenen Codeschnippsel, um zu verstehen, wie die Syntax der Template-Logik aussieht und wie Code eingebettet wird.

Für eine Dokumentation und ein UL4 howto verweisen wir auf die UL4-Website.

Wie werden Template-Tags bei UL4 eingebettet?

UL4-"Template-Tags" werden mit <? ?> umschlossen. Diese Begrenzer können auch gegen andere Zeichen ausgetauscht werden. Die alternativen Begrenzer können beim Compile-Vorgang übergeben werden.

<?if persons?>
<ul>
<?for person in persons?>
<li><?printx person.lastname?>, <?printx person.firstname?></li>
<?end for?>
</ul>
<?else?>
<p>No persons found!</p>
<?end if?>

Erklärung: Hier ist persons eine Liste von Datenobjekten, die Personendaten enthalten. Zuerst wird abgeprüft, ob die Liste leer ist, wenn nein, dann wird eine "unordered list" (ul) mit so vielen Einträgen erstellt, wie Elemente in der Liste sind. Von jedem Listenelement-Objekt werden der Familienname und der Vorname durch Komma getrennt ausgegeben.

Zum Vergleich stellen wir Ihnen die Syntax für das Templating System Fluid analog zum obigen Beispiel dar. Fluid ist der Default für FLOW3-basierende Anwendungen.

Fluid Template System

Das obige Beispiel in UL4 wurde für das Fluid Template System umgesetzt:

<f:if condition="{persons}">
<f:then>
<ul>
<f:for each="{persons}" as="person">
<li>{person.lastname},{person.firstname}</li>
<f:/for>
</ul>
<f:/then>
<f:else>
<p>No persons found!</p>
<f:/else>
<f:/if>

Sie erkennen schon an diesem einfachen Beispiel, dass die UL4-Schreibweise flüssiger von der Hand geht und intuitiver ist. UL4 lehnt sich sehr stark an die Konventionen in Python und an die Datentypen von JSON an, zwei effiziente Hilfsmittel für die Webprogrammierung.

Weitere Informationen:

Abschließend wollen wir noch zwei weitere Templatesysteme kurz anreissen, damit Sie einen breiteren Vergleich ziehen können.

Template-Schreibweise in vLIB

Wir zitieren ein Beispiel von der Website lamp.clausvb.de

<p>This text is gray without "if_condition" set. Click 
<a href="tmpl_if.php?if_condition=1">here</a> to make it purple. 
<tmpl_if name='if_condition' op='>' value='5'><span 
style="color: green">"if_condition" is more than 5.</span><tmpl_else>
"if_condition" is not set or below (equal to) 5.</tmpl_if></p>

Template-Schreibweise in Grails

Wir zitieren zwei Beispiele von der Website grails.org

<g:if test="${name == 'fred'}">
   Hello Fred!
</g:if>
<g:else>
   Hello ${name}! Do I know you?
</g:else>
<g:each in="${[1,2,3]}" var="num">
<p>Number ${num}</p>
</g:each>

Abschließende Bemerkungen zu Template Systemen

Wir wollten Ihnen hier einen Eindruck geben, wie moderne Template Systeme — mit Fokus auf Fluid — funktionieren und wie sich das LivingLogic Template System UL4 im Vergleich dazu positioniert.

Die Alleinstellungsmerkmale von UL4 sind:

  • Angenehme Syntax, die sich an Python orientiert
  • Plattformunabhängig durch Bytecode-Generierung
  • Vollständigkeit der Funktionalität

Updatefähigkeit von Typo3 vs. XIST4C

Eine wichtiges Unterscheidungsmerkmal von Typo3 vs. XIST4C wollen wir am Ende hervorheben. Typo3 Version 5 wird komplett neu entwickelt. Die Version 5 wird nicht mehr kompatibel zu den Versionen 4.x sein.

Dies wäre für das LivingLogic Content Management System XIST4C keine Option, denn annähernd 500 auf XIST4C basierende Projekte werden durch ein überschaubares Team gepflegt und müssen jederzeit geupdated werden können. Jedes System von der allerersten Version bis heute ist auf die neueste Version — und wir sprechen von weit mehr als 500 Update-Versionen — updatefähig.

Das Template System UL4 reiht sich hier nahtlos ein. Die bekannten Template-Strukturen werden in UL4 verfügbar sein — daran arbeiten wir gerade im Augenblick. Es wird keinen Bruch in der Entwicklung geben. Aus diesem Grunde haben wir uns auch vor Jahren entschieden, keine marketingträchtige Versionierung mit Major- und Minor-Releases einzuführen, sondern eine kontinuierliche Releasestrategie mit konsequenter Updatemöglichkeit zu realisieren.

Barrierefreie Version ladenAlle Links unterstreichenDruckansichtEmpfehlung versenden