phpbar.de logo

Mailinglisten-Archive

[php] =?iso-8859-1? =?us-ascii?B?ID0/dXMtYXNjaWk/UT9fPTNEPTNGdXMtYXNjaWk9M0ZCPTNGVVQ5U1JUc GZQ?= TVCcGhwPTVEX0VtcGZlaGx1bmd fZj?= 1GQ3JfVGVtcGxhdGVzX 1N5?= stem? =

[php] =?iso-8859-1? =?us-ascii?B?ID0/dXMtYXNjaWk/UT9fPTNEPTNGdXMtYXNjaWk9M0ZCPTNGVVQ5U1JUc GZQ?= TVCcGhwPTVEX0VtcGZlaGx1bmd fZj?= 1GQ3JfVGVtcGxhdGVzX 1N5?= stem? =

Tobias Daur php_(at)_phpcenter.de
01 Aug 2002 13:09:02 +0200


On Sun, 2002-07-28 at 17:42, Ralf Geschke wrote:
> Zum einen ist es selbstverstaendlich moeglich, Templates in mehrere
> Schnipsel zu zerteilen und jene nach Bedarf einzubinden.
> Dies klappt von Programmierer-Seite aus vorzueglich.

Keine Frage.

> Andererseits - und hier musste ich mich vom Designer auch
> erst ueberzeugen lassen - ist dieses Vorgehen in der Praxis
> mitunter gar nicht erwuenscht.

Ebent. Genau das habe ich vor Deinem "Noe" geschrieben ;)
Ein mächtigeres Templatesystem (mit einer im Template liegenden Logik)
ist aber eher in der Lage, alles in einem einzigen Template abzuhandeln,
als eines, das mit einem vergleichsweise dummen Template arbeitet.

> Was die "Unter-Templates" anbetrifft - ich schaetze, Du meinst
> Ausgaben, die von Fall zu Fall unterschiedlich aussehen sollen.

Naja, die würde ich nicht in separate Sub-Templates packen.
Eher sowas wie:
index.tpl - Das Template, das den groben Rahmen erzeugt
menu.tpl - Das Untertemplate fürs Menü, das innerhalb von index.tpl
aufgerufen wird
artikel.tpl - Das Template, das aufgerufen wird, wenn im Inhaltsbereich
von index.tpl ein Artikel erscheinen soll.



> Der ersten Block wird (vom Skript aus gesteuert) im Fehlerfall
> ausgegeben, dabei wird der zweite durch einen Leerstring ersetzt,
> damit es zu keiner Ausgabe des zweiten kommt.

Ab hier geht Smarty einen anderen, wie ich finde: eleganteren Weg.
Die beiden alternativen Blöcke werden so zusammengefaßt:

{section name array-mit-den-daten}
Hier ist Dein erster Block
{sectionelse}
Hier ist Dein zweiter Block, wird ausgeführt, wenn das array leer ist
{/section}

Finde ich transparenter, da im Template selber klar wird, wie die beiden
Blöcke zusammenhängen. Das ist IMHO auch für den HTMLer einsichtiger.
Egal, wer diesen Code reinschreibt, der PHPler oder der HTMLer -
hinterher muß man nur in eine Datei gucken, um zu verstehen, wie's
funktioniert.

> > Außerdem soll er die Möglichkeit haben, die Dinge, die ihn direkt
> > betreffen, auch selber zu beeinflussen.

> Naja, Kommunikation zwischen Designer und Programmierer sollte
> trotz Einsatz von Templates noch moeglich sein. ;-)

;-) Deshalb bauen wir ein System, das möglichst so kryptisch wird, daß
der HTMLer ständig den PHPler fragen muß, wenn er ein Zeichen ändern
will. Also lassen wir das doch besser mit den Templates, oder nicht?
Nee, der Sinn der Sache ist doch, daß jeder möglichst das sieht, das er
benötigt, und möglichst nicht das, was nur der andere braucht. Und da
(hier sind wir uneins) bin ich der Meinung, daß eine Lösung, die die
Modifizierung von Variablen und die Logik der Blockausgabe ins Template
legt und dafür mächtigere Templatefunktionen bietet, klar die bessere
Lösung vor einer ist, bei der zwangsweise alles im Script ablaufen muß,
weil's das Template nicht kann. Da Du in so einem System genauso
restriktiv arbeiten kannst, wenn Du willst, wie in einem weniger
mächtigen System, ist dem IMHO lediglich der Performance-Nachteil
entgegenzuhalten. Den macht aber Smarty dadurch wieder wett, daß es eine
PHP-Datei aus Template und Script generiert, die immer dann ausgeführt
wird, wenn sich Template oder Script nicht geändert haben. Damit
verbindet Smarty die Vorteile eines mächtigen Templatesystems mit denen
einer Datei, die aus PHP und HTML besteht.

> Andererseits ist das Abschneiden nach x Zeichen eine klassische Aufgabe,
> die normalerweise im Skript passiert, bzw. eben bevor die
> Ergebnisse ins Template eingesetzt werden.

Normalerweise. Aber: Welches ist der bessere Weg? IMHO ganz klar der,
das über einen Modifier im Template zu machen. Wenn hier mein HTMLer
gemeinsam mit dem Gestalter vor dem Monitor hockt und an der
Schriftgröße, Zellenbreite, Grafik, etc. dreht, so lange, bis alles
paßt, dann ist es produktiv, wenn er den Einfluß darauf selber hat, nach
wievielen Zeichen abgeschnitten wird.
Daß er dann wahlweise im PHP-Code wühlen oder aber den PHPler dazuholen
muß, ist nicht wirtschaftlich.


> Aber wie erwaehnt - der Code ist offen und kann gerne erweitert
> werden. Die Callback-Idee von Ulfs IT[x] fand ich beispielsweise
> nicht schlecht.

Callback?

> > Aber Du hast mich neugierig gemacht - ich schaue mir Apolda noch mal in
> > Ruhe an :)
>
> Du meinst Apolda Template - Apolda ist 'ne Stadt in Thueringen -
> http://www.apolda.de ;-)

Wieder was gelernt ;)


cu

Tobias


php::bar PHP Wiki   -   Listenarchive