WebsiteBaker Support (2.8.x) > Diskussion über WB (closed)
Template Engine, Sinn und Unsinn.
badknight:
--- Quote from: mr-fan on January 07, 2013, 04:09:24 PM ---Meine Frage wäre gewesen - kann man das mit den TWIG Templates genauso (oder besser) gestalten wie mit den Settingsschleifen?
--- End quote ---
Als Programmierer bietet dir Twig 4 Möglichkeiten wie du eine Template verwenden kannst. Wobei - ich vermute - dass davon höchstens 2 Varianten oft genutzt werden:
Twig_Loader_Filesystem - ist die Variante was wir von jeder TE kennen - Datei öffnen, sachen reinschreiben - ausgeben :)
--- Code: ---<?PHP
$templateDir = '/path/to/templates';
$loader = new Twig_Loader_Filesystem($templateDir);
$twig = new Twig_Environment($loader);
echo $twig->render('index.html', array('name' => 'Fabien'));
?>
--- End code ---
Natürlich kann man das auch erweitern:
--- Code: ---<?PHP
$templateDir1 = '/path/to/templates';
$templateDir2 = '/path/to/templates2';
$loader = new Twig_Loader_Filesystem(array($templateDir1, $templateDir2));
$twig = new Twig_Environment($loader);
echo $twig->render('index.html', array('name' => 'Fabien'));
?>
--- End code ---
Twig_Loader_String() - hier wird die zweite Variante verwendet - ein Template anhand eines Strings verwenden:
--- Code: ---<?PHP
$loader = new Twig_Loader_String();
$twig = new Twig_Environment($loader);
echo $twig->render('Hello {{ name }}!', array('name' => 'Fabien'));
?>
--- End code ---
Damit kann man auch die in WB oft gesehenen "Datenbank Templates" verwenden.
Wobei man etwas bedenken muss:
--- Quote ---several tags, like extends or include do not make sense to use as the reference to the template is the template source code itself.
--- End quote ---
Aber in Zeiten wo es Tools wie den AFE oder andre Module gibt, sehe ich da kein Problem Template- Dateien zu verwenden
--- Quote from: easyuser on January 07, 2013, 10:31:44 PM ---Sicher kann man sagen: "Warum nicht gleich PHP?".
--- End quote ---
Deine Gründe sind vollkommen richtig, aber es kann auch noch andere Gründe haben:
- Man arbeitet mit mehreren Menschen an einem Projekt (wie es eine Firma ja öfters macht), nun will der Grafiker aber wieder bei gewissen Situationen andere Elemente haben etc. - bevor ich nun jemand meinen PHP-Code umschreiben lass, ist es mir lieber er hat eine vom PHP - Code unabhängige Möglichkeit das ganze zu machen.
Davon abgesehen:
Twig hat noch weitere nette dinge, die einen das Arbeitsleben vereinfachen können - wie z.B. Macros
Man erstellt sich eine Datei mit folgendne Code:
--- Code: ---{% macro input(name, value, type, size) %}
<input type="{{ type|default('text') }}" name="{{ name }}" value="{{ value|e }}" size="{{ size|default(20) }}" />
{% endmacro %}
--- End code ---
speichert dies als forms.html (ob nun .htt, .twig oder what ever - macht in dem Beispiel keinen Unterschied ;) )
--- Code: ---{% import "forms.html" as forms %}
--- End code ---
Diesen kleinen Code in das gewünschte Template einbauen, schon hab ich ein nettes feature:
--- Code: ---<p>{{ forms.input('username') }}</p>
<p>{{ forms.input('password', null, 'password') }}</p>
--- End code ---
So kann ich mir schnell und einfach input felder erstellen.
Natürlich überlasse ich jeden selbst, welche Funktionen / Features er als hilfreich bezeichnet :)
Stefek:
@Badknight
--- Quote from: badknight on January 07, 2013, 10:57:46 PM ---Aber in Zeiten wo es Tools wie den AFE oder andre Module gibt, sehe ich da kein Problem Template- Dateien zu verwenden
--- End quote ---
Außer, dass im Falle von Section-Modulen und Layouts fürs Frontend, kann es oft vorkommen, dass Du für jede Section des gleichen Modules ein anderes Template brauchst.
Dann wird die Arbeit mit AFE schon schwieriger und es würde sich in den Fällen empfehlen, entweder tatsächlich die DB vollzustopfen, oder eine Funktion zu haben, die in den Module-Settings die Layout-Files anzeigt und speichern läßt.
Gruß,
Stefek
badknight:
--- Quote from: Stefek on January 07, 2013, 11:16:24 PM ---@Badknight
--- Quote from: badknight on January 07, 2013, 10:57:46 PM ---Aber in Zeiten wo es Tools wie den AFE oder andre Module gibt, sehe ich da kein Problem Template- Dateien zu verwenden
--- End quote ---
Außer, dass im Falle von Section-Modulen und Layouts fürs Frontend, kann es oft vorkommen, dass Du für jede Section des gleichen Modules ein anderes Template brauchst.
Dann wird die Arbeit mit AFE schon schwieriger und es würde sich in den Fällen empfehlen, entweder tatsächlich die DB vollzustopfen, oder eine Funktion zu haben, die in den Module-Settings die Layout-Files anzeigt und speichern läßt.
Gruß,
Stefek
--- End quote ---
Da hast du schon recht, man muss sich immer ansehen um welches Modul es sich handelt.
Bei Gefühlte 80% der Modulen reicht es eine normale Template datei zu verwenden, da es keine Sonderwünsche vorhanden sind :)
Stefek:
Ja.
Stimmt.
Eine Download-Gallery will man wohl nicht auf jeder Seite haben.
News wird wohl auch meistens nur einmal pro Seite verwendet.
Bei Modulen wie Members siehts dann allerdings anders aus.
Oder einem ExtendedWYSIWYG.
Ist schon je nach Modul verschieden. Gebe ich Dir recht.
Ich meine aber eben für die Fälle, wo man es per Section anders haben will, muss man sich etwas einfallen lassen.
Gruß,
Stefek
DarkViper:
--- Quote from: Stefek on January 07, 2013, 11:50:51 PM ---Ich meine aber eben für die Fälle, wo man es per Section anders haben will, muss man sich etwas einfallen lassen.
--- End quote ---
Das ist primär erst mal ein Problem des jeweiligen Modules. Wenn es mehrfache Instanzierungen unterstützt, so gehört da auch seine Templatezuweisung dazu.
Der Kern kann und darf an dieser Stelle nicht eingreifen, da er ja von den Internas eines Modules keinerlei Informationen hat(und die auch nicht braucht). Den Kern interessiert nur die allgemeine Schnittstellengesta ltung zur Einbindung also derzeit der Aufruf von view, install, modify, add, delete, upgrade, uninstall und evt. include.php. Mehr nicht. Alles andere wäre bereits wieder eine unzulässige, harte Verflechtung von Kern und Modulen.
Es werden später mit Sicherheit diverse Helper-Klassen vom Kern angeboten werden die jedoch in der aktuellen Codeumgebung noch nicht vernünftig realisierbar sind.
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version