Gerhard Knabe: Templates

Beitrag lesen

Na ja, wenn ich das richtig verstanden habe, trennt das zwar
Programmlogik von Ausgabe, aber der eigentliche Vorteil von
Templates Schablonen ist damit aufgehoben. Eine Schablone soll ja
dazu dienen, mit genau einer Schablone beliebig viele Seiten zu
erstellen.

Nicht unbedingt. Wenn ich auf einer Webpräsenz z.B. eine Bildergalerie, einen Newsticker und ein Gästebuch anbiete, so können das durchaus 30 Seiten sein, ggf. sogar viel mehr, wenn die Inhalte z.B. des Newstickers mit angegliedertem Archiv über mehere Seiten verteilt werden, um den Bensucher nicht mit einer Seite und hunderten von Beiträgen zu überschwemmen. Ich nehme mal an, Du willst nicht mit einer einzigen Schablone sowohl Newsticker als auch Gästebuch und Bildergalerie abdecken.

Ich sehe das dann so: Die Masterschablone legt das Layout aller Seiten fest, sozusagen eine Meta-Formatierung. Das Gästebuch, der Newsticker und die Bildergalerie haben dann ihrerseits eigene Schablonen, mit denen sie die von ihnen generierten Daten formatieren. Wenn etwa in einer Bildergalerie mehrere 1000 Bilder verfügbar sind, wird man die wohl kaum alle gleichzeitig anzeigen (ähnlich wie beim Archiv eines Newstickers), nichtmal als Thumbnail. Entweder werden die Bilder kategorisiert oder aber auf mehrere Seiten verteilt (oder beides), dann mit einer "nächste Seite" und "vorherige Seite" Navigation. Für diese Seiten ist natürlich nur eine Schablone notwendig, da alle Daten die gleiche Struktur haben. Die Schablonen beschreiben, wie Daten einer bestimmten Struktur zu formatieren sind. Welche Inhalte die Daten konkret haben (also ob die Eigenschaft Name nun "Wilfried Müller" oder "Rosalinde Schneider" enthält) ist dabei ja nicht relevant, sondern nur wie die Daten strukturiert sind. Die Datenstruktur stellt sozusagen die Schnittstelle einer Schablone dar. Eine Schablone zur Anzeige des Gästebuches benötigt andere Daten, als eine Schablone zur Anzeige einer Bildergalerie, hat also eine andere Schnittstelle.

Für den Designer hat das durchaus Vorteile, da er sich z.B. auf die Gestaltung des Gästebuches konzentieren kann ohne dabei die Navigationsleiste berücksichtigen zu müssen. Bei der Gestaltung der Masterschablone muss er sich Gedanken darüber machen, wie die Elemente (z.B. Kopf, Navigation und Seiteninhalt) zusammen präsentiert werden sollen, ohne die Gestaltungsprobleme dieser Teile bereits vollständig gelöst zu haben. Natürlich bestehen da Abhängigkeiten, wenn z.B. die Bilder der Bildergalerie in einer Breite präsentiert werden soll, für die die Größe des entsprechenden Elements der Masterschablone nicht ausreicht. Das ist aber bei OOP nicht anders. Beim Zusammenführen von unabhängigen Klassen zu einer komplexeren Struktur muss man ja auch die Eigenschaften, Schnittstellen und Verantwortlichkeiten der einzelnen Klassen berücksichtigen. Trotzdem wird versucht, die Abhängigkeiten der Klassen untereinander zu minimieren, damit der Code leichter durchschaubar und wartbar wird (Änderungen haben weniger Seiteneffekte, sind lokal). Warum sollten solche Prinzipien beim Design von Webseiten nicht auch nützlich sein?

Der Grund für den Einsatz von Schablonen ist ja nicht, viele Daten damit zu formatieren, denn das könnte man auch mit Code tun, sondern Code, Daten und Formatierung voneinender zu trennen um Änderungen mit möglichst wenig Aufwand (und ohne Programmierkenntnisse) durchführen zu können. Bei wenigen komplexen Schablonen ist ein solcher Änderungsaufwand aber viel größer als bei einer (sinnvollen!) Unterteilung in mehrere kleinere Schablonen. Natürlich kann man das auch übertreiben. Vor dem falschen Einsatz von Techniken schützt einen aber niemand, da muss man halt nachdenken, was sinnvoll ist. Wenn ich etwa das Gästebuch umgestalten will, dann ist mir eine Schablone, die nur das Gästebuch enthält entschieden lieber als eine, die die ganze HTML-Seite formatiert, inkl. Kopfzeile und Navigation. Diese Elemente machen die Schablone nur unübersichtlich und sind in dem Moment nicht von Interesse. Sinnvoll strukturierte und zusammengesetzte Schablonen konzentrieren die Aufmerksamkeit auf das Wesentliche.

Aber wie ich schon schrieb: Das Konzept erzwingt ein solches Vorgehen nicht, man kann es eben auch anders machen. Ich glaube aber, Schablonen haben mehr Potential als man in dem Fall nutzen würde.

MfG
GK