PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Template Klasse/System Problem


mentrio
19.12.2005, 17:11:45
Guten Tag,

Ich hab gestern ne schöne Template Klasse gefunden die ich persönlich gut finde. Die Template Klasse findet Ihr hier ->LINK<- (http://www.kuerbis.org/).

Aber ich vermisse da ein paar Funktionen, also ich kann einer Template (.tpl) keine Variable zuweisen, ihr kennt sicherlich die Funktion:
eval ("\$VARIABLE.= \"".template("TEMPLATENAME")."\";");

Diese Funktion gibt es (vll. habe ich es falsch angewendet) irgendwie nicht.
Ich weiß einer Template wird eine Variable zugewiesen aber wenn ich in eine Template eine Variable reinschreibe wird die Variable garnicht geparst sondern die Variable wird einfach angezeigt, genau so ist es mit PHPcode (z.b IF/ELSE), irgendwie wird das auch nicht geparst sonder nur angezeigt.

Ich würde jetzt gerne von euch wissen was ich genau dazuschreiben muss damit das Funktoniert oder gibt es so eine ähnliche Template Klasse die sowas kann.

Ich danke euch schon im Vorraus.

meikel (†)
19.12.2005, 21:09:18
Ich hab gestern ne schöne Template Klasse gefunden die ich persönlich gut finde. Die Template Klasse findet Ihr hier ->LINK<- (http://www.kuerbis.org/).
Ja.

Aber ich vermisse da ein paar Funktionen, also ich kann einer Template (.tpl) keine Variable zuweisen,
Beispiele angucken.

<html>
<body>
<p>{TPL_VAR}</p>
</body>
</html>

$t = new KTemplate('./template.tpl');
$t->assign('TPL_VAR', 'Das ist ein Text');
$t->out();

ihr kennt sicherlich die Funktion:
eval ("\$VARIABLE.= \"".template("TEMPLATENAME")."\";");
Solchen Unfug ("eval is evil!") kenne ich leider zur genüge. :-(

mentrio
19.12.2005, 21:17:34
Das habe ich auch gehört das eval = evil ist deswegen will ich ja ne andere templateklasse. (Aber ich brauche so eine Funktion die ca. so in er Art funktoniert)

Also so geht das, das habe ich herausgefunden aber pack das mal in eine while schleife rein, dann geht das garnicht. Hier ich hab es so gemacht:

#### Aktion: ShowEntrys ####
if($action == "show" || $action == "") {

$sql = mysql_query("SELECT * FROM mgb_entries ORDER BY id Desc");
while($row = mysql_fetch_array($sql)) {
#### Aktion: Template laden / Definieren ####
$t = new KTemplate('entries.tpl');
$t->assign('TPL_VAR', 'Das ist ein Text');
$t->out();
}

#### HautpTemplate Ausgeben ####
$tpl = new KTemplate ('index.tpl');
$tpl->assign('title', 'mGbook v0.1');
$tpl->assign('Author', 'Autor');
$tpl->assign('Message', 'Nachricht');
$tpl->out();
}

meikel (†)
19.12.2005, 21:39:53
Das habe ich auch gehört das eval = evil ist
Fein. Warum bist Du trotzdem auf solchen Mist scharf?

deswegen will ich ja ne andere templateklasse. (Aber ich brauche so eine Funktion die ca. so in er Art funktoniert)
Was dynamische Blöcke sind, hast Du wohl nicht verstanden?

Also so geht das, das habe ich herausgefunden aber pack das mal in eine while schleife rein, dann geht das garnicht.
http://www.kuerbis.org/template/examples.php <- LESEN!

Hier ich hab es so gemacht:
Und so ist es falsch. Wenn, dann wenigstens so:


$t = new KTemplate ('index.tpl');
$t->assign('title', 'mGbook v0.1');
$t->assign('Author', 'Autor');

$d = new KTemplate('entries.tpl'); # weitere Instanz mit anderem Template
$dd = $d->fetchBlock('mgb_entries'); # dynamischen Block definieren

$sql = mysql_query("SELECT * FROM mgb_entries ORDER BY id Desc"); # mit AS arbeiten, damit $row die passenden Indizes hat
while($row = mysql_fetch_array($sql))
{

$dd->assign($row); # assoziatives Array dem Block im d Template zuweisen

$t->assign('GB_EINTRAG', $dd->get() ); # Inhalt von d Tmplate abholen und dem t Template zuweisen

$dd->reset(); # d Instanz zurücksetzen/Variablen löschen

}

$t->out(); # und rausblasen.


Was ist daran schwer?

Hinweis:
1. KTemplate macht bei jeder weiteren Variablenzuweisung ein Autoappend
2. es werden nur die Templatevariablen ersetzt, für die mit assign() ein Wert übergeben wurde.
3. aus dem Beispiel:
das
// put column object instance into row object
$t_row->assign("col",$t_col);
geht nicht bei PHP 5. Da geht es so:
$t_row->assign("col",$t_col->get() );