Seite 1 von 1

Template Engine

Verfasst: Do 25. Mär 2004, 10:59
von sweide
Hallo,

ich teste gerade Contenido und bin begeistert.

Ein Manko ist mir aber aufgefallen: Eine fehlende Template-Engine a la SMARTY - oder habe ich Sie übersehen?

Und zwar möchte ich sie für folgende Zwecke einsetzen: Um mir die Suche nach richtigen Verzeichnissangaben, etwa bei Bildern, zu ersparen habe, ich dafür eine Funktion geschrieben.
Jetzt soll in meinem Layout überall dort, wo ich eine rel. Pfadangabe machen muss, ein Platzhalter wie ewta {DOTS} mit dem von der Funktion ermittelten Wert ausgefüllt werden. Logischerweise kann der Platzhalter zig male im Layout vorkommen....

Hat jemand ne Idee, wie ich das realisierenkann?

Habe es schon mit der Variablen CMS_CONTAINER[x] probiert. Klappt eigentlich auch, aber wenn ich bspw. CMS_CONTAINER[12] insgesamt 50 Mal in meinem Layout verwende, dann bringt er mir in meinem Template auch 50 Mal den Container 12.
Wisst Ihr was ich meine?

Viele Dank und Grüsse,
Sweide

Verfasst: Do 25. Mär 2004, 11:36
von emergence
ich hab da mal was zusammengeschrieben...

-> http://contenido.de/forum/viewtopic.php ... =tpl+reset

Verfasst: Do 25. Mär 2004, 11:36
von timo
mit der Klasse "Template" kannst du dies erreichen, und einem Modul.

Verfasst: Do 25. Mär 2004, 14:51
von sweide
Hi,

nein das meinte ich nicht ganz.

ich meinte, wie ich mit einem Modul an mehreren Stellen des Layouts Output erzeugen kann.
Beispielsweise dynamisch erzeugter Javascript-Code am Ende des Layouts, um eine Navigation richtig zu plazieren, wohingegen die Navigation selbst irgendwo in der Mitte des Layouts ausgegeben wird....


Danke und Grüsse,
Sweide

Verfasst: Do 25. Mär 2004, 15:00
von timo
Stell dir vor, daß Contenido einfach nur den Code ersetzt (z.b. Modul X in Container 1). Das Resultat kannst du dir in der Tabelle con_code ansehen.

Siehe auch das techref-Verzeichnis unter "docs".

Verfasst: Fr 26. Mär 2004, 09:07
von sweide
Sorry, wenn ich noch mal poste, aber ich glaube, wir sprechen noch von zwei verschiedenen Sachen:

ich meinte, ob es möglich ist, mit einem einzigen Modul output an zwei Stellen im Layout zu liefern?

kleines Beispiel:

---------------------------------

<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
<title>Website Titel</title>
</head>
<body>

<table width="100%" cellspacing="0" cellpadding="0" border="0">
<tr>
<td>CMS_CONTAINER[1]</td>
<td>CMS_CONTAINER[2]</td>
</tr>
<tr>
<td>CMS_CONTAINER[3]</td>
<td>CMS_CONTAINER[4]</td>
</tr>
</table>
{EXTRAOUTPUT}
</body>
</html>

----------------------------------

So, ein einziges Modul, das meinetwegen dem CMS_CONTAINER[1] zugeordnet ist, soll jetzt aber gleichzeitig noch an der Stelle {EXTRAOUTPUT} etwas ausgeben.....

Viele Grüße und tausend Dank

Verfasst: Fr 26. Mär 2004, 09:37
von timo
nein, da das kein Template-System ist, sondern der PHP-Code des Moduls wird an die Stelle des Containers gesetzt. Du kannst höchstens denselben Container 2mal verwenden und dein Modul umstricken, daß es mit einer Abfrage an Position 2 etwas anderes liefert.

Verfasst: Fr 26. Mär 2004, 13:09
von hpk
Stimmt! Habe mir dazu folgendes überlegt:
Durch ein zusätzliches Flag kann bei jeder Seite, außer bei wirklich dynamisch generierten, angegeben werden, ob diese statisch sein sollen. Wenn eine Seite als statisch markiert oder erstellt wird, wird ihr dynamisch generierter Inhalt einmal in eine statische HTML-Datei geleitet. Dabei werden alle Links entsprechend einer Zuweisungstabelle angepasst. So dass die Links in der statischen Seite weiterhin alle Inhalte des CMS aufrufen können, aber mit Berücksichtigung der anderen statischen Seiten. Man kann dann entweder die statischen Links aufrufen oder den dynamischen, wenn man die URL kennt.
das wär' ja super. hab auch schon lang gesucht nach soetwas und nix gefunden!
In wie weit das realisierbar ist, wird sich zeigen.
ich drück euch die daumen!!!