Antwort
 
Themen-Optionen Thema durchsuchen
Alt 21.02.2007, 09:44 Nach oben    #1
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.516
Standard Template-Engine, Verhalten bei Blöcken ohne Variablen

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 --> 
Alternativ lässt man die Methode setContentBlock() weg und sieht jeden Block ohne Template-Variablen oder -Blöcke als "content block" an und verwendet diesen dann auch so.

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 --> 
so heißt die Variable danach
HTML-Code:
{foobar}
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 21.02.2007, 12:15 Nach oben    #2
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.516
Standard

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?
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 21.02.2007, 13:46 Nach oben    #3
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 853
Standard

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>
...wobei es in dem Fall auch wiederum ziemlich unsinnig äre, eine extra Komponente (Block, ...) zu definieren, anstatt das Formular direkt in die Bedingung zu schreiben.

Hab neulich ein FUDForum aufgesetzt. Dort gibt es auch je mehrere Sektionen in einem Template.

Basti
Basti ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 21.02.2007, 13:56 Nach oben    #4
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.516
Standard

Interessant, passt nur halt genau kein bisschen zum Thema.
das Template hat keine Macht über die Logik. Daran wird eine Diskussion nichts ändern.
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 21.02.2007, 14:30 Nach oben    #5
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 853
Standard

Was ist denn dann genau das Thema?

Und, deine Aussage stimmt so nicht. Darstellungslogik gehört natürlich ins Template. Die Frage ist eben, wo man die Grenze zieht.

Basti
Basti ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 21.02.2007, 14:34 Nach oben    #6
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.516
Standard

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.
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 21.02.2007, 20:10 Nach oben    #7
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 853
Standard

Zitat:
Zitat von Ben Beitrag anzeigen
Ich will hier aber keine Grundsatzdiskussion führen.
?

Zitat:
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.
Wer soll dir beantworten, was "man" braucht? Wenn es dir um die Performance geht, dann nimm einfach mal ein paar typische und ein paar extreme Anwendungsfälle und mess beide Lösungen durch.

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…
Basti ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 26.02.2007, 15:09 Nach oben    #8
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.516
Standard

Zitat:
Zitat von Basti Beitrag anzeigen
Wenn es dir um die Performance geht, dann nimm einfach mal ein paar typische und ein paar extreme Anwendungsfälle und mess beide Lösungen durch.
Den Ratschlag habe ich nunmal befolgt bzw. hoffe, dass das in nächster Zeit mal austesten kann.

Zitat:
Zitat von Basti Beitrag anzeigen
Oder: Mach doch mal Werbung für deine "unused Blocks": Warum die so toll sind und warum sie deine Template Engine verbessert haben.
Hm.
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.
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus

Ä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


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:43 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45