Tak trochu jiné makra v šablonách

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
trubi
Člen | 25
+
0
-

Ahojte, chtěl bych se zeptat, jestli existuje nějaký způsob, jak vytvořit makro, jehož obsah se při generování nejdříve provede a až výstup se potom vloží do šablony. Nevím, jestli to co píšu je srozumitelné, tak to raději ukážuna příkladu:

<?php
LatteMacros::$defaultMacros['mojemakro'] = '<?php echo nejaka_funkce(%%); ?>';

function nejaka_funkce($args) {
    return 'ahoj';
}
?>

v sablone:

<?php
<p>{mojemakro $args}</p>
?>

vystup (cachovana sablona), ktery nechci:

<?php
<p><?php echo nejaka_funkce($args) ?></p>
?>

vystup (cachovana sablona), ktery chci:

<?php
<p><?php echo 'ahoj'; ?></p>
?>

Těď už to určitě chápete. Jde takového chování docílit nějak jednoduše?
Díky

Martin

?>

jtousek
Člen | 951
+
0
-
LatteMacros::$defaultMacros['mojemakro'] = '<?php %nejaka_funkce% ?>';

Ta funkce by měla vypadat např. nějak takto:

function nejaka_funkce($s) {
	$latte = new LatteMacros();
	//příklad 1 - získání jednoho argumentu
	$arg = $latte->fetchToken($s);
	//příklad 2 - získání pole
	$array = $latte->formatArray($s);
	//čím se má %nejaka_funkce% nahradit v šabloně
	return 'echo "ahoj"';
}

EDIT:

Bohužel tohle není vůbec zdokumentované. Ač to používám tak nemohu říct, že bych to ovládal dokonale. Naučil jsem se to studováním zdrojových kódů Nette.

Editoval jtousek (14. 4. 2011 17:06)

trubi
Člen | 25
+
0
-

To je skvele, mnohokrat dekuji. Hned to jdu zkusit…