Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Sinnvolle Anwendung eines Template-Systems (https://www.delphipraxis.net/124876-sinnvolle-anwendung-eines-template-systems.html)

Valle 26. Nov 2008 18:27


Sinnvolle Anwendung eines Template-Systems
 
Hi DPler! :hi:

Ich bin nun mittlerweile seit einiger Zeit dabei, eine Webseite mal von Grund auf sauber zu erstellen. Ich habe schon mehrere Wochen zusammen mit einem Freund verbracht, um dies alles zu planen und die anzuwendenden Patterns zu besprechen. Nun hänge ich hier vor einem kleinen Problem, bei dem ich gerne mal eure Meinung hören möchte.

Wir haben unser Projekt nach dem MVC-Model gestaltet. Dabei haben wir die Möglichkeit, unsere Templates ähnlich zu folgendem Code aufzurufen.

Code:
$view = new View("mein_temaplte");
$view->assign("ueberschrift", "Hello World!");
$view->display();
Das hat bisher auch immer gereicht, denn wir haben noch kein Design eingebaut und bisher nur Debug-Code gehabt, um den Core zu testen. Jetzt ist es allerdings so weit, dass ich doch mal ein Design einbauen möchte und langsam aber sicher mal die 'sichtbaren' Dinge programmieren will. Dabei stellt sich jetzt bzgl. der Views ein Problem: Wie benutze ich diese, wenn ich auf jeder Seite einen Header und einen Footer haben möchte, aber auch die Wahl haben will, ob die rechte oder linke Spalte der Webseite eingeblendet werden soll? Dazu bisher erstmal folgende, sehr simple Lösung:

Code:
$view = new View("main");
$rechte_spalte = new View("rechts");
$linke_spalte = new View("links");
$content = new View("content)";
$footer = new View("footer");
$header = new View("header");

$content->assign("dies_und_das", "Der Content eben. ;-) ");

$view->assign("rechts", $rechte_spalte->display(false));
$view->assign("links", $linke_spalte->display(false));
$view->assign("footer", $footer->display(false));
$view->assign("header", $header->display(false));
$view->assign("content", $content->display(false));

$view->display();
Wie man sieht: Viel Code. Kleine Erklärung: display(false) gibt die Ausgabe des Templates nicht mit echo aus, sondern mit return zurück. display(true) oder display() hingegen benutzt echo.

Was mich daran enorm stört, ist, dass das Ganze in ein ewig Copy&Paste-Gemetzel ausarten wird. Ich habe eigentlich keine Lust für jeden Controller, erstmal diese ganzen Zeilen zu kopieren und anschließend dort reinzupasten. Jetzt frage ich mich eben: Wie mache ich das richtig? Ich will die Möglichkeit haben, verschiedene Teile des Layouts auszublenden: Footer, Header, Spalten, usw. Wie macht ihr sowas? Habt ihr da Ideen und Vorschläge? :-)

Mit freundlichen Grüßen,

Valle

mkinzler 26. Nov 2008 18:45

Re: Sinnvolle Anwendung eines Template-Systems
 
In einer Schleife
Um welches Template-System handelt es sich?

Die Muhkuh 26. Nov 2008 18:49

Re: Sinnvolle Anwendung eines Template-Systems
 
Wohl um sein selbst entwickeltes.

Valle 26. Nov 2008 19:27

Re: Sinnvolle Anwendung eines Template-Systems
 
Zitat:

Zitat von mkinzler
In einer Schleife

Aha. Toll. :gruebel: Könntest du das vielleicht etwas näher beschreiben?

Zitat:

Zitat von mkinzler
Um welches Template-System handelt es sich?

Selbst geschrieben. Die Templates bestehen aus PHP-Dateien, deren Ausgabe via Output-Buffering aufgefangen werden. So spart man sich das Parsen der Templates. :)

Mit freundlichen Grüßen,

Valle

Valle 27. Nov 2008 14:47

Re: Sinnvolle Anwendung eines Template-Systems
 
Es sind zwar noch nicht so ganz 24h, aber ich hoffe, ich darf den
Thread hier trotzdem mal ein kleines bisschen nach oben drücken. :thumb:

Mit freundlichen Grüßen,

Valle

Valle 29. Nov 2008 10:22

Re: Sinnvolle Anwendung eines Template-Systems
 
Mh... Ich kann mir irgendwie fast nicht vorstellen, dass es in einem Forum voller Programmierer keine Leute gibt, die auch mit derartigen Template-Systemen zutun haben. :? Naja, abwarten, vielleicht hilft doch noch einer. :)

Mit freundlichen Grüßen,

Valle


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz