![]() |
| | Themen-Optionen | Thema durchsuchen |
| | Nach oben #1 |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.516
|
Hi, das ist jetzt eigentlich kein wirkliches "Programmier"-Problem, aber da wir kein Forum für "Modellierung" oder so haben schreibe ich es mal hier rein. Ich schreibe eine Template-Klasse, welche Blöcke und Variablen kennt. Ich frage mich nun, ob es sinnvoll ist die Blöcke zu unterscheiden. Eine Unterscheidung ist in meiner Implementierung wichtig, nämlich zwischen Blöcken mit weiteren Template-Variablen oder -Blöcken und Blöcken, die nur statischen Inhalt enthalten. Das ist für mich sinnvoll, da ich so durch eine if-Abfrage erkennen kann, ob ich preg_replace() auf den Template-Code loslassen muss oder ob eine simple Zuweisung genügt. Gut. Jetzt zum eigentlichen Punkt. Ich mache es derzeit so, dass man solche "content blocks" explizit via setContentBlock($blockName) angeben muss. Das hat den Vorteil, dass die Template-Engine sogenannte "unused blocks" erkennt und aus dem Template herausstreicht. Sind keine Daten für den Block vorhanden und ist es kein "content block", so wird der Block während dem "parsen" nicht beachtet. Frage ist nun, ob das überhaupt nötig ist. Ich sehe den Vorteil darin, dass man im Template Kommentare schreiben kann, die dann letztlich aber nicht im Quelltext angezeigt werden. Man könnte das einfach so machen HTML-Code: <!-- BEGIN DOC_foobar --> Kommentare, Doku, ... whatever <!-- END DOC_foobar --> <!-- BEGIN foobar --> ... <!-- END foobar --> Was sagt ihr dazu? Danke. Grüße, Ben. Randinfo (vielleicht ist das nützlich zu wissen?) .. : Ich suche die Blöcke aus dem Template und ersetze sie in der Template-Datei durch eine Variable. Heißt der Block HTML-Code: <!-- BEGIN foobar --> <!-- END foobar --> HTML-Code: {foobar}
|
| | |
| | Nach oben #2 |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.516
|
Noch ein Beispiel, vielleicht ein etwas besseres. Man hat eine Template-Datei, in der ein Loginformular dargetellt wird. Wenn man aber schon eingeloggt ist, braucht man das Formular natürlich nicht mehr. Anstatt jetzt für das Formular eine extra Datei zu verwenden schreibt man den Block einfach mit in die "normale" Template-Datei. Ist man eingeloggt wird der Block ignoriert "unused block", ist man nicht angemeldet so wird der Block mittels setContentBlock() als "anzuzeigen" deklariert ... Wenn in dem "Login-Block" sowieso Variablen eingeparsed werden sollen, wenn man nicht eingeloggt ist, ist das setContentBlock() ja hinfällig, weil der Block ja nicht als "unused" angesehen wird. Meinungen? |
| | |
| | Nach oben #3 |
| Bastian Fenske Registriert seit: 04.01.2006 Ort: Kassel
Beiträge: 853
|
Meine Frage hierzu wäre, wer (Template-Designer/Programmierer) welche Möglichkeiten erhalten soll. Ich würde die Steuerung der Sichtbarkeit von Komponenten weitgehend dem Template überlassen, weil es mmer billiger ist, daran was zu ändern, als die Controller umzuschreiben. Die Methode, Blöcke in einer Datei separat zu definieren finde ich fein (wenn ich dich da richtig verstanden hab). Aber das Einbinden würde ich dennoch immer über konditionale Abfragen im Template machen. Allein schon, um transparent zu machen, was da passiert. Beispiel wäre: Code: <div class="margin_col">
<t:if cond="!User.loggedIn()">
<t:include component="login_form" />
</t:if>
</div>
<t:component id="login_form">
<form>...</form>
</t:component>
Hab neulich ein FUDForum aufgesetzt. Dort gibt es auch je mehrere Sektionen in einem Template. Basti |
| | |
| | Nach oben #6 |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.516
|
Ich will hier aber keine Grundsatzdiskussion führen. Habe ich denn meine Frage nicht ausreichend genug gestellt? Ich würde gerne Meinungen hören, ob man eine Unterscheidung zwischen reinen "content blocks" und "unused blocks" braucht. Alles andere gehört hier nicht rein. |
| | |
| | Nach oben #7 | |
| Bastian Fenske Registriert seit: 04.01.2006 Ort: Kassel
Beiträge: 853
| Zitat:
Bei mir werden Templates nur einmal via Skript geparsed und später wird einfach nicht ausgeführt, was "unused" ist. Drum komm ich anscheinend auch nicht in deine Problematik rein. Aber vielleicht gehts anderen hier ja anders. Oder: Mach doch mal Werbung für deine "unused Blocks": Warum die so toll sind und warum sie deine Template Engine verbessert haben. Vielleicht versteh ichs dann. Basti PS: Und, ich will dich nicht mit grundsätzlichem Zublubbern, versteh eben nur einfach nicht, was konkret du von uns bzw. was du da umsetzen willst… | |
| | |
| | Nach oben #8 | ||
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.516
| Zitat:
Zitat:
Ob die irgendwas verbessern weiß ich nicht. Ich erklär das nun auch nicht, wie ich darauf kam. War eben eher aus einem speziellen Anwendungsfall heraus. Ich überdenke das nochmal in Ruhe und würde dann eventuell nochmal darauf zurückkommen, mit einer etwas intensiveren Erklärung, was ich eigentlich machen will. Danke bis hierhin. [PS] Mir gefällt die Struktur, die du da dargestellt hast. | ||
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | Thema durchsuchen |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [ZendFramework] Variablen für Template zuweisen | kampfgnom | PEAR, PECL und Frameworks | 6 | 08.07.2007 01:08 |
| Kleine Fragen zur IT[X] Template Engine | ex³ | PEAR, PECL und Frameworks | 0 | 18.07.2006 14:00 |
| [PHP] Ein einfaches Template-System | MrNiceGuy | Tutorials | 0 | 09.10.2005 18:30 |