Drupal und die Templates / Themes

Zur Zeit beschäftige ich mich, aus gegebenem Anlass, wieder intensiver mit Drupal. Dazu muss ich an dieser Stelle meinen ersten Vergleich (Drupal vs. TYPO3) etwas korrigieren. Drupal schneidet nicht schlecht ab, wenn man vorrangig ein kollaboratives System betreiben möchte. Dafür ist Drupal auf (meine bisher) kurze Sicht das geeignetere System. Als klassisches CMS ist TYPO3 jedoch nicht zu schlagen.
Heute bestand meine Lektion darin Drupal mit Smarty zu betreiben. Das ist für mich die einzig sinnvolle Wahl. Die Installation lief auch reibungslos. Vorausgesetzt man mag die Console, dann geht’s auch recht fix. Smarty war in wenigen Minuten als TemplateEngine betriebsbereit. Dann musste ich nur noch ein passendes Smarty-Theme für Drupal nachinstallieren.
In diesem Zusammenhang sollte ich erwähnen, dass Drupal zwischen Themes und Templates unterscheidet, was für einen TYPO3′ler recht ungewohnt bis “komisch” erscheint. Meiner Ansicht nach stehen Themes für das Look and Feel einer Drupal Installation, Templates hingegen gehören zu Themes und umfassen eigentlich nur den HTML-Code. Darauf werde ich evtl. später noch eingehen, die Erklärung sollte jedoch als Einstieg für folgendes Code-Schnipsel reichen:

{$title}

{$content}

(Die Leerzeichen musst ich wegen blogger einfügen…)
Das was ich hier als Code-Schnipsel bezeichnet habe, reicht anscheinend für das ganze box.tpl. “Box” hört sich recht elementar an - das ist es in Drupal auch. Praktisch das halbe Design besteht aus “Boxen” bzw. aus “Blöcken”. Auch hier ist mir die Differenzierung nicht 100%ig intuitiv klar. Dazu kommt, dass mich zwar das o.g. Template durch seine Schlichtheit fasziniert mich aber auch mindest genau so im Dunkeln stehen lässt. Ich meine, in “{$content}” kann ja nun wirklich alles stehen und ein Blick in den HTML-Source meiner Testinstallation bestätigt diesen Verdacht auch. Ich mache mich also auf die Suche und durchforste den Source und greife mir wahrlos das comments Module heraus und werde fündig:
$output .= “\n”;”
Haaaa (eher gequält als freudig)! Das mag ich ja gar nicht. “Logik” und “Präsentation” vermischt. Ein paar Zeilen später finde ich jedoch noch:
$output .= theme(’comment_view’, $comment, module_invoke_all(’link’, ‘comment’, $comment, 1));
Hmm (eher genussvoll als nachdenklich)! Das richt ja förmlich nach einem ordentlichen Abstraktions-Layer für Themes der ganz nebenbei auch noch einen Abstraktions-Layer für TemplateEngines enthält. Frage mich nur, warum schmutziger HTML-Output mit sowas gepaart wird… Irgendwie nährt sich das Gefühl, dass die Drupal’er eine - sagen wir auch hier - “komische” Herangehensweise an dieses Thema haben. Das erklärt vielleicht auch warum Drupal-Webseiten eigentlich immer wie Drupal-Webseiten aussehen.

“Eike macht einen auf Drupal” - to be continued…
Fast paradox, dass ich mich gleichzeitig um das neue TYPO3-Template-Repository kümmer :-)