Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » PHP & MySQL » tutorials für templates Antworten
tutorials für templates

[SpecFor]crusher
Otto-Normal-Poster


Beiträge: 97


hiho ich steige nun so allmählich in die php programmierung ein und wollt mal wissen wie das mit Templates so geht...
zum beispiel was es sich so mit den geschweiften klammern auf sich hat, etc.

das 2. hat sich erledigt =)

crusher am 2002-06-26 16:17 ]

  Profil   E-Mail   Website   Editieren   Zitieren

Manticor
Quasselstrippe


Beiträge: 240


Aaaalso:

Beschäftige mich auch gerade mit dem Thema und daher... Bin aber deshalb auch noch nicht so erfahren darin.

Templates sind Vorlagen (in unserem Falle vermutlich für HTML-Seiten). Das W3C und Konsorten (ach nee, Konsortium) empfiehlt zwischen ausgeführtem Code und Inhalt zu trennen.
Vorteil: HTML-Code und PHP-Code lassen sich unabhängig voneinander verändern und der Seitengestalter muss nicht notwendigerweise HTML können, sowie für den PHP-Coder eventuell weniger HTML-Kenntnisse erforderlich sind.

Ein Template ist also (im angenommenen Fall) eine Datei, die wie eine HTML-Datei aussieht, bis auf den kleinen Unterschied, dass irgendwo besondere Tags enthalten sind, die anzeigen: STOP! Hier muss was eingefügt werden, was mir ein Skript liefert. Oft verwendet scheint @@befehl@@ dafür zu sein.

Da so ein Template aber nun unglücklicherweise weder PHP noch gültiges HTML ist muss man es parsen, was bedeutet (man erinnere sich an die guten, alten Textadventures), dass man ein PHP-Skript drüberjagen muss, welches die Template-Tags mit der passenden PHP-Ausgabe ergänzt.

Der Zeitpunkt, wann man einTemplate parst ist nicht unwichtig.
Entweder gleich nach der Erstellung des Templates. Es wird also in eine gültige PHP Datei umgewandelt, die statt der @@-Befehle z.B. dann <?php machwasdynamisches(); ?> enthält. Der Vorteil: Geschwindigkeitgewinn, der Nachteil: Nach jeder kleinen Änderung im Template muss ich neu parsen.
Die zweite Methode ist, dass das Template zur Laufzeit (also während der Skriptausführung) geparst wird. Ist langsamer, da ja eventuelle mehrere Tausend Zeichen durchsucht werden müssen, aber man muss seine Templates nicht gleich nach einer Änderung parsen.

Davon ab leitet sich ein weiterer Aspekt: Ich muss einen Editor für die Templates haben.
Als alleiniger Autor, der sich mit den Eigenheiten des Systems auskennt kann man auf ihn auch verzichten, will man as Skript abe weitergeben oder von mehreren pflegen lassen, so kommt man kaum um einen Editor herum.
Der Editor ist dann meist eine HTML-Seite mit mächtig viel Textarea. Das alte Template wird eingelesen und dargestellt. Daneben kann man z.B. die @@-Tags anklickbar darstellen, die dann über JavaScript eingefügt werden. Wenn das Template abgeschickt wird, wandert es erst durch den Parser, der Fehlermeldungen ausgibt oder aber dass geparste Template abspeichert.

Alle Klarheiten beseitigt? Fein.

Manti


---

  Profil   E-Mail   Website   Editieren   Zitieren

HG
Posting-Schinder


Beiträge: 520


Hmmm. Ich hab mich letztens auch damit beschäftigt, und habe mich für eine bestehende Template-Klasse entschieden, zu der es zwei super Dokumentationen gibt (wenn auch nicht von den Autoren)... http://www.php-tools.de

---
www.kuminatano.de

  Profil   E-Mail   Website   Editieren   Zitieren

[SpecFor]crusher
Otto-Normal-Poster


Beiträge: 97


hmm ich weiß nur das ich mir nen GB gezogen habe un darin mit templates gearbeitet wurde..
ich werde dann und wann den code mal posten ...

  Profil   E-Mail   Website   Editieren   Zitieren

Philipp Gérard
Foren-Team


Beiträge: 1508


Vars in ein Array laden (z.B.):

1: 
2: 
3: 
4: 
5: 
6:
$charray = array(
	"{title}" => $news["title"],
	"{datum}" => $news["datum"],
	"{news}" => $news["news"],
	"{who}" => $news["who"]
);


Später mit "strtr" Zeichen ersetzen:

1: 
2: 
3:
$outvar .=strtr($template, $charray);


und denn:

1: 
2: 
3:
echo $outvar;


Das ist jetzt kein komplettes Script, aber so habe ich es bisher immer gemacht, und es klappt...


---
Arbeit ist das Feuer der Gestaltung. - Marx

  Profil   E-Mail   Website   Editieren   Zitieren

Philipp Gérard
Foren-Team


Beiträge: 1508


ahja, das template mit
1: 
2: 
3:
join(, file($tplfile));



---
Arbeit ist das Feuer der Gestaltung. - Marx

  Profil   E-Mail   Website   Editieren   Zitieren

[SpecFor]crusher
Otto-Normal-Poster


Beiträge: 97


wow cool danke so wollte ichs haben

  Profil   E-Mail   Website   Editieren   Zitieren

Manticor
Quasselstrippe


Beiträge: 240


Aber die eigentlich Frage, die mich interessieren würde, ist noch nicht beantwortet.

Wie mache ich das mit Templates für ganz Seiten am besten? Wenn ich es parse, kann ich es dann komplett in einen langen String packen oder läuft das bei PHP irgendwann über?
Wie verwalte ich die Templatebefehle und parse möglichst effektiv/schnell.
Was ist zu empfehlen? Parsen zu Laufzeit oder "vorparsen"?
Hat jemand mal ein Organimgramm parate, wie Template, Parser und eingesetzter PHP-Code ineinandergreifen?

Ist jetzt ziemlich viel, aber ich würde gerne die Prinzipien verstehen und nicht nur eine Teillösung für ein Spezialproblem sehen .

Viele Grüsse,
Manti

_________________




---

  Profil   E-Mail   Website   Editieren   Zitieren

[SpecFor]crusher
Otto-Normal-Poster


Beiträge: 97


also bei mir is des so, ich finde die lösung mit templates interessant, weil ich dann schön html und php getrennt habe. ich könnte es auch in einem script feddig bauen, nur dann steigt man im nachhinein sicher nt mehr durch 1000zeilen code so leicht durch.
außerdem kann ich im template die sachen eben mal kurz anpassen anstatt ne halbe stunde im code rumzuwurschteln.
noch dazu eignen sich templates deshalb hervorragend zu geschützten seiten, weil man kann ja nun keine kompletten html seiten einbinden, die wären ja sofort von außen zugänglich..

  Profil   E-Mail   Website   Editieren   Zitieren

Manticor
Quasselstrippe


Beiträge: 240


Aber das beantwortet leider nicht meine Frage.
Die Vorteile von Templates sind mir bekannt, aber die programmiertechnische Seite eher weniger.

Ich kann ja mal versuche zu erzählen, wie ich es mir vorstelle, vielleicht kann dann ja jemand Fehler in meiner Vorstelleung auftun.

Ich habe ein Template, welches eine HTML-Datei mit besonders gezeichneten Keyords ist, wo später dynamisch erzeugter Inhalt eingesetzt werden soll.
Ich habe weiterhin ein Skript, welches den Inhalt erzeugt.
Ich habe ein weiteres Skript, das das Template nach Keywords parst und den dynmaischen Inhalt aus dem ersten Skript dort einsetzt, eine echte HTML-Datei erzeugt und diese ausgibt.

Stimmt das?
Wenn ja, wie funktioniert der Parser? In fertigen Klassen muss ich ja leider nur $foo->machallesfürmich() eingeben und sehe nicht so richtig dahinter.
Und obige Fragen bleiben auch noch.



---

  Profil   E-Mail   Website   Editieren   Zitieren

Philipp Gérard
Foren-Team


Beiträge: 1508


templates funktionieren im grunde so:

du definierst variablen in dokumenten, welche später dynamisch durch aus einer datenbank ausgelesenen texte/bilder/whatever ausgetauscht werden.

der sinn ist klar, trennung von design & code. für größere sachen musst du einstein fragen


---
Arbeit ist das Feuer der Gestaltung. - Marx

  Profil   E-Mail   Website   Editieren   Zitieren

Philipp Gérard
Foren-Team


Beiträge: 1508


der parser funktioniert wie o.g.

---
Arbeit ist das Feuer der Gestaltung. - Marx

  Profil   E-Mail   Website   Editieren   Zitieren

Manticor
Quasselstrippe


Beiträge: 240


So, habe jetzt wohl die Lösung, damit ich verstanden werde.

Nicht wie nutze ich eine Templateklasse, sondern wie progge ich selber eine?


---

  Profil   E-Mail   Website   Editieren   Zitieren

[SpecFor]crusher
Otto-Normal-Poster


Beiträge: 97


??
so wie oben..
denk ich, hab die frage net verstanden...

  Profil   E-Mail   Website   Editieren   Zitieren

koelle
Pixelschubser


Beiträge: 1


Hi,

ich bin auch grad dabei ein Template System zu entwickeln. Habe aber ein Problem bei der Ausgabe von Datenbankeinträgen. Hab mal versucht innerhalb der while-Schleife zu assignen.

while ($row = $db->fetchObject())
{
$tpl->assign("title",$row->title);
}

Dann ersetzt er mir auch die Templateholder durch Inhalte, aber immer nur den ersten auf einer Seite. Hab schon lange gegoogelt, konnte aber kein gutes Tutorial finden, wie man Datenbankeinträge ausgibt.
Kennt da jemand eines

  Profil   E-Mail   Editieren   Zitieren
Seite 1 | 2  

Antworten
Nach oben