Schrift
[thread]668[/thread]

HTML::Template: wie effektiv nutzen



<< >> 5 Einträge, 1 Seite
MartinR
 2006-02-09 14:10
#6878 #6878
User since
2004-06-17
305 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich drehe mich irgendwie im Kreis. Ich überlege wie man HTML::Template(::Compiled) wohl am besten für die Erstellung einer Website nutzen könnte. Mir geht es hier um die Frage wie man Templates am effektivsten verschachtelt.

Angenommen meine Site soll im Groben immer gleich aussehen. Also z.B. einen Navigationsbereich, einen Seitenkopf, einen Seitenfuss und einen Contentbereich haben. Die Navigation wird dynamisch erstellt und kommt aus der DB. Der Seitenkopf und -fuss bleibt meist gleich.

Aber der Content - mal besteht er aus einfachem HTML-Text (evtl. auch aus der DB), mal werden nur einzelne Bilder dargestellt, manchmal Bildübersichten, mal Bilder und Texte zusammen, dann natürlich ein Gästebuch, evtl. eine Linksammlung (natürlich auch aus der DB), oder auch mal ein Umfragescript usw.

Das, was dargestellt wird, ist natürlich abhängig vom gewählten Navigationspunkt. Soll ich also für jeden Navigationspunkt nun ein einziges Template erstellen, welches die Darstellung dieses Punktes insgesamt regelt? Oder ein Rahmentemplate je nach ausgewähltem Punkt mit Unter-Templates füllen? Was, wenn ein Navigationspunkt verschiedene Outfits haben kann? Also z.B in einer Fotogalerie die erste Seite aus einleitendem Text besteht und dann auf den folgenden die Bilder kommen. Wie bleibe ich flexibel, damit ich auch Ideen, die ich in ein paar Wochen habe mit einbauen kann ...

Fragen über Fragen. Kann mich jemand mal in die passende Richtung schubsen? Oder kennt jemand gute (deutsche) Literatur/Websites hierzu?

Ich könnte natürlich auch ein fertiges CMS nehmen. Selber programmieren macht aber mehr Spass ...
Schwergewichte, wie z.B. Mason, übersteigen mein bescheidenes Können leider etwas. Daher würde ich auch gerne bei HT bleiben.

Danke schon mal

Martin
esskar
 2006-02-09 14:44
#6879 #6879
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ich regel sowas immer mit componenten.
ein header/footer template für kopf- und fusszeile.
dann ein template für das menu.

für einen punkt (also sagen wir mal ein gästebuch) hab ich dann ein template, welches den header, das menu usw. includiert.

was natürlich auch geht, ist eine art content template, dass dann dynamisch (basierend aus der url (z.b.)) andere templates nachlädt. so hast du dann eher die möglichkeit an dem rahmen etwas zu ändern, da du dann nur eine datei ändern musst, anstatt vielen templates den rahmen anzupassen
pq
 2006-02-09 15:37
#6880 #6880
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
ich mach es auch so wie esskar, also guest.tmpl, contact.tmpl, die includieren
dann header und footer.
aber es geht auch prima andersrum. im falle von HTC kannst du auch
dynamisch includen, also
Code: (dl )
1
2
3
<html><head>...
<%include_var page %>
</body></html>

und als parameter fuer page übergibst du dann z.B. guest.tmpl
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Strat
 2006-02-09 16:02
#6881 #6881
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
wenn es sehr viele sehr unterschiedliche seiten sind, koennte auch folgender weg interessant werden:

1. ein haupttemplate erstellen, das header/footer/menu/usw. erzeugt
2. dort ein <!-- TMPL_VAR NAME=CONTENT --> oder so reinsetzen
3. CONTENT aus der Datenbank oder so befuellen
4. intensiv CSS nutzen
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
MartinR
 2006-07-05 10:06
#6882 #6882
User since
2004-06-17
305 Artikel
BenutzerIn
[default_avatar]
Danke schon mal, möchte meine Frage jetzt nochmal aufgreifen ...

denn wo bzw. wie speichert Ihr die *Logik* für die Templateanzeige?

Es reicht ja nicht aus die tmpl über include einzubinden. Diese müssen ja auch noch befüllt werden. Wenn ich also z.B. <TMPL_INLCUDE neuigkeiten.htm> schreibe muss mein Script ja auch wissen, dass es nun auch die Neuigkeiten aus der DB auslesen soll, was es in anderen Fällen natürlich nicht braucht.

Bisher (HT) hatte ich dies ebenso in der DB gespeichert. Also so: Zum Navigationspunkt "Startseite" gehört das Template "start.htm". Dies stand in der DB-Tabelle "navigation". Nun hatte ich noch ein DB-Tabelle "module". In der stand, dass im Template "start.htm" u.a. das Modul "Neuigkeiten" includiert ist. Somit wusste das Script bescheid dass es die Neuigkeiten aus der DB holen soll.
Zwischendurch hatte ich dann auch noch den parameter "query" des tmpl ausgelesen um zu erfahren welche includes vorkommen um auch wirklich nur die benötigten Inhalte aus der DB zu ermitteln.

Mit HTC löse ich das nun so:

<!-- TMPL_VAR OBJECT.Neuigkeiten -->
<!-- TMPL_INCLUDE neuigkeiten.htm -->

D.h. dass die Befüllung eines includierten tmpl nun durch das tmpl-file gesteuert wird, welches dieses beinhaltet.

Oder habt Ihr andere Lösungsansätze?

edit: Schubs - vielleicht hat ja doch einer einen Tipp für mich ...\n\n

<!--EDIT|MartinR|1152617404-->
<< >> 5 Einträge, 1 Seite



View all threads created 2006-02-09 14:10.