PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : welches template system verwenden?



Andislack
03-04-2003, 12:08
hi!

ich möchte mich in templates einarbeiten, weiss aber nicht, welche(s) templates ich verwenden soll bzw. welches besser? ist.

kann mir da jemand (gute) literatur empfehlen bzw. tipps aus eigener erfahrung geben?

möchte eigentlich hauptsächlich erstmal php-code und html-code strikt trennen.
gibt es da templates, die dafür geeigneter sind als andere?

vielen dank gruss andi

elrond
03-04-2003, 13:29
auch hi,
ich habe bisher sehr gute erfahrungen mit fastTemplate gemacht. Allerdings habe ich es für meine zwecke etwas umgebaut, und halte die Templates nicht wie vorgesehen in dateien sondern in einer db....ist aber geschmackssache.

Ansonsten ist fastTemplate mindestens so schnell wie der Name verspricht und auch relativ einfach zu bedienen...:)

jwebworks
03-04-2003, 14:44
Hi,

das Thema hatten wir schon ein paar mal:

http://www.mrunix.de/forums/showthread.php?s=&threadid=30302&highlight=Template
http://www.mrunix.de/forums/showthread.php?s=&threadid=30884&highlight=templates

cu, stop.h

Andislack
07-04-2003, 22:25
hi und danke für eure tipps!

also fast templates hören sich nicht ganz so wild an...denke dass ich das bei mir verwenden kann, aber ich hab dennoch ein paar verständnis fragen.
ich hab mal ein kleines beispiel von fasttemplates nachgemacht und auch noch ein paar fragen.

hier mal das script bar.tpl:


<!-- bar.tpl -->
<HTML>

<HEAD>
<TITLE>PAGETITLE</TITLE>
</HEAD>

<BODY BGCOLOR=BLACK TEXT=WHITE>

<H1>PAGETITLE</H1>
PAGECONTENT

</BODY>
</HTML>

hier das foo.tpl


<!-- foo.tpl -->

<p>Hallo hier ist mein erstes Template!</p>

und hier der php teil dazu:



<?php

include "../template/class.FastTemplate.php3";

$tpl = new FastTemplate(".");
$tpl->define(array(foo => "foo.tpl",
bar => "bar.tpl"));

$tpl->assign(NAME, "me");
$tpl->assign(PAGETITLE, "Welcome!");

$tpl->parse(PAGECONTENT, "foo");
$tpl->parse(MAIN, "bar");

$tpl->FastPrint(MAIN);

?>


jetzt meine fragen:

- was macht die zeile $tpl->assign(NAME, "me"); ?

- kann ich jetzt den inhalt von foo.tpl völlig "frei" definieren? d.h. auch völlig verzwickten html code - ich meine ist dass dann mein "haupt html-code"?

- kann ich dann in foo.tpl auch wieder einen platzhalter für ein untergeordnetes tpl einbringen?

- in wieweit ist es denn sinnvoll, code in templates zu stecken?

- wie bringe ich die templates in eine if-schleife o.ä. unter?

meine fragen sind nicht allzu deutlich, weil ich das ganze funktionsprinzip, wer hier wen aufruft und wer wem was übergibt nicht wirklich verstanden habe...


also wäre nett, wenn mir einfach mal jemand ein bisschen was allgemeines dazu erklären könnte und mir auf die sprünge hilft!

danke schonmal gruss andi

elrond
08-04-2003, 06:38
Original geschrieben von Andislack


jetzt meine fragen:

- was macht die zeile $tpl->assign(NAME, "me"); ?

damit wird versucht im Template die zeichenkette "NAME" gegen "me" zu tauschen



- kann ich jetzt den inhalt von foo.tpl völlig "frei" definieren? d.h. auch völlig verzwickten html code - ich meine ist dass dann mein "haupt html-code"?

kannst du machen. ich habe mir angewöhnt die platzhalter mittels {} zu kennzeichenen.

Bsp:



<body>
<html>
<h2 align=center>{MAINTITEL}</h2>
<table width="100%" border=0>
<tr valign="top">
<td width="10%" bgcolor="#cccc99" valign="top">
<table>
{SYSMENU}
</table>
</td>
<td>
{TABLE}
</td>
</tr>
</table>

</body>
</html>





- kann ich dann in foo.tpl auch wieder einen platzhalter für ein untergeordnetes tpl einbringen?


kannst du machen, mein plazuhalter {SYSMENU} ist auch ein template



- in wieweit ist es denn sinnvoll, code in templates zu stecken?

- wie bringe ich die templates in eine if-schleife o.ä. unter?


js-code kann sinn machen, php-code natürlich nicht, da dieser nicht geparst werden würde. ausserdem ist es sinn der übung code und design zu tennen...




danke schonmal gruss andi

ich hoffe , dass das hilft.

elrond
08-04-2003, 06:48
ich hab mal noch ein beispiel angehägt. das ist eine function aus meinem code, die die angehängten templates anzeigt.

Andislack
08-04-2003, 23:11
hi elrond!

danke erstmal für deine hilfe. langsam lichtet sich der nebel der mich umgibt ;-)

ist das korrekt, wenn ich mit

$tpl->assign(PLATZHALTER, "Inhalt");
den PLATZHALTER direkt in diesem code-stück mit dem Inhalt versehe und nicht ein template für PLATZHALTER verwende?
also ist assign eher für kurze/kleine inhalte gedacht, die kein eigenes template benötigen bzw. nur text sind!?

und mit

$tpl->parse(PAGECONTENT, "foo");
lasse ich dann für PAGECONTENT das template foo parsen.
also parse = platzhalter mit template ersetzen!?



damit wird versucht im Template die zeichenkette "NAME" gegen "me" zu tauschen
dass das so abläuft war mir schon klar, nur finde ich in den platzhalter NAME nirgends in den dateien die ich gepostet habe, sodass diese zeile irgendwie doch keinen sinn macht oder übersehe ich da etwas?


mit "templates in einer if-schleife unterbringen" meinte ich eigentlich, wie ich das template dann aufrufe bzw. wo und wie oft ich das new_tpl definieren muss.
also z.B. einmal am anfang der seite:

$tpl = new FastTemplate(".");
$tpl->define(array(foo => "foo.tpl",
bar => "bar.tpl"));
und dann meine if - else anwendungen...


if (blablabla)
{
$tpl->assign(PAGETITLE, "Welcome!");
$tpl->parse(PAGECONTENT, "foo");
}

else
{
$tpl->assign(PAGETITLE, "Hallo!");
$tpl->parse(PAGECONTENT, "bar");

so, dass sind jetzt mal wieder ne ganze menge fragen...

dabei fällt mir auf, was würde mich daran hindern, alles mit
echo include einzubinden anstatt templates zu benutzen?

naja ich hoffe, dass du/ihr mir das noch beantworten könnt :-)

gruss andi

elrond
09-04-2003, 06:43
for ($i=0;$i<count($rs_arr);$i++) {
$tpl->assign(array( "{MANNAME}" => $rs_arr[$i]["mantext"],
"{MICON}" => $rs_arr[$i]["icon"],
"{LINK}" => $PHP_SELF."?action=manchange&mid=".$rs_arr[$i]["manid"]

));
$tpl->parse("{ROWS}",".man_row");
}

$tpl->parse("{TABLE}","man_table");
$tpl->parse("MAIN","man_main");
$tpl->FastPrint();


>den PLATZHALTER direkt in diesem code-stück mit dem Inhalt versehe und >nicht ein template für PLATZHALTER verwende?
>also ist assign eher für kurze/kleine inhalte gedacht, die kein eigenes >template benötigen bzw. nur text sind!?

mit Hilfe des tpl->assign() wird eigentlich nur eine zuordnungstabelle generiert, die dann in $tpl->parse() auf das angegebene template angewendet wird.
Der erste Parameter beim parse() ist nur ein name, mit fdem auf den geparsten inhalt zugegriffen wird. ich habe dazu das hier gefunden:

http://www.devmag.net/webprog/php_fast_template.htm
oder auch das
http://www.php-center.de/referenzen/pferdezeitungcom.htm

> mit "templates in einer if-schleife unterbringen" meinte ich eigentlich, wie >ich das template dann aufrufe bzw. wo und wie oft ich das new_tpl >definieren muss.
das funxt genau so wie du es angegeben hast. für das objekt $tpl (heisst es bei mir) reicht es eine Instanz zu erzeugen. Ich mache das gleich am anfang greife mittels "globel $tpl;" in den functionen darauf zu.