Hallo KarlEgon,
wenn ich das richtig sehe, sollte die Anforderung also mit ein paar Templates und DocumentController, die die Ausgabelogik kapseln zu erschlagen sein. Weitere "includes" in Templates können dabei ganz einfach mit dem
<core:importdesign /> erledigt werden. Zur Gestaltung von wiederverwendbaren Elementen kannst du das
<html:template />-Tag nehmen. Dieses steht im APF-DOM-Model im DocumentController (=MVC-Controller) dann als eigenes Objekt zur Verfügung und kann entsprechend genutzt werden. Hier die relevanten Stellen in der Doku:
*
Adventure PHP Framework - Standard TagLibs
*
Adventure PHP Framework - Standard TagLibs
Falls eine Ausgabe von Objekten in einer Liste direkt stattfinden kann, ist der Iterator-Tag (siehe
Adventure PHP Framework - Standard TagLibs) eine ganz nette Alternative.
Deine Templates würden dann in etwa so aussehen:
main.html: Code:
<html>
<head>
<title>{$titel}</title>
</head>
<body>
<div id="header">
<core:importdesign namespace="sites::karlegon::pres::template" template="header" />
</div>
<div id="left">
<core:importdesign namespace="sites::karlegon::pres::template" template="left" />
</div>
<div id="right">
<core:importdesign namespace="sites::karlegon::pres::template" template="right" />
</div>
<div id="content">
<core:importdesign namespace="sites::karlegon::pres::template" template="content" />
</div>
<div id="footer">
<core:importdesign namespace="sites::karlegon::pres::template" template="footer" />
</div>
</body>
</html>
Die jeweiligen "Subtemplates" enhalten dann die entsprechenden statischen oder dynamischen Inhalte. Für die Generierung der dynamischen Inhalte können dann DocumentController (siehe
Adventure PHP Framework - Controller) genutzt werden. Ein expliziteres Beispiel kann ich dir basteln, wenn du mir weiteren Input gibst. Die Verschachtelungstiefe und Kombinationsmöglichkeiten bei den einzelnen Bereichen (Templates) ist uneingeschränkt, sprich du erhälst maximale Wiederverwendbarkeit.
Noch ein Controller-Beispiel zum Schluss: den Fertigstellungsgrad füllst du im APF so aus:
Template-Datei:
Code:
<@controller namespace="sites::karlegon::pres::controller" class="status_controller" file="status_controller" @>
<div id="status">
Fertigstellungsgrad: <html:placeholder name="ready"/> %
</div>
Controller-Datei: PHP-Code:
class status_controller extends baseController
{
function transformContent(){
$this->setPlaceHolder('ready',20);
}
}
Um dein Haupt-Template ausgeben zu können brauchst du noch eine Bootstrap-Datei. Diese halt folgende Gestalt:
PHP-Code:
include_once('./apps/core/pagecontroller/pagecontroller.php');
$Page = new Page('helloworld');
$Page->loadDesign('sites::karlegon','pres/templates/main');
echo $Page->transform();
And now over to you!
