phpbar.de logo

Mailinglisten-Archive

[php] lib-templates

[php] lib-templates

Thomas Schulz php_(at)_phpcenter.de
Thu, 14 Feb 2002 18:22:24 +0100


Manuel Jenne wrote:

> eine Frage zu Templates und zwar eher organisatorisch als technisch.

... wäre trotzdem interssant zu wissen, ob Du gerade templates neu 
erfindest oder ein Problem mit einer konkreten Template-Implementierung 
hast :)


> Ich habe folgenden Seitenaufbau:
> 
> 
> index.php
> +-----------------------------------+
> | menu menu menu menue              |
> |                                   |
> | submenu                           |
> | submenu     +-----------------+   |
> | submenu     |  snippet        |   |
> | submenu     |                 |   |
> | submenu     |                 |   |
> |             +-----------------+   |
> | footer                            |
> +-----------------------------------+

Was, kein snippet im snippet mehr? ;-)

> In index.php wird die Seite zusammengestrickt, d.h. das Menu wird generiert,
> das Submenu, headline und footer werden geschrieben. Der Code ist IMMER für
> alle Seiten gleich. Das kann ich mit Templates gut lösen. Unterschiede
> gibt's dann in dem Teil "snippets". Da gibt's mal Tabellen, mal DB-Zugriff,
> mal nur HTML-Code.

Du kannst z.B. in der index.php je nach Bedarf die Daten für alle 
"Snippets" ermitteln und schön in arrays verpacken. Dein Snippet ist 
dann nur noch ein Template im Template.

Mit smarty steht dann in Deinem index.tpl-Template z.B.:

{if $snippet eq "supersnippet1"}
     {include file=supersnippet1.tpl}
{/if}

--> ja, da ist ein wenig Logik im Template nötig...

> Bisher (ohne Templates) habe ich diese Snippets immer mit include() geladen.
> Die konnten dann PHP-Code enthalten und/oder HTML. Mit Templates macht das
> ja kein Sinn (Trennung Design/Progr.).

Du kannst den Code, der Dir die Daten fürs Sub-Template liefert auch 
erst mit/vor dem Template einbinden. Dann steht (bei smarty) in der 
index.tpl:

{if $snippet eq "supersnippet1"}
     {include_php file="inc/supersnippet1.inc"}
{/if}

Der Aufruf des Templates erfolgt dann in "supersnippet1.inc" mit
$this->display('supersnippet1.tpl');


Am besten Du probierts mal selbst ein wenig rum. Bin auch noch dabei 
herauszufinden, wie man das am besten organisiert.


ThS.


-- 
Dipl. Ing. Thomas Schulz
4bconsult - Beratung für die Baubranche
http://4bconsult.de


php::bar PHP Wiki   -   Listenarchive