{mymacro whatever, 1, 2, 3} proc nezna makro $_presenter?
- j3nda
- Člen | 12
zdravim,
pokousim se udelat nove vlastni makro pro generovani statickeho obsahu a zjistuji, ze samotne makro i kdyz je vykonavano urcitym presenterem jako sablona, tj. umisteni sablony je jasne dano k presenteru. tak presenter makro nezna.
pro svou funkcnost potrebuji pri zpracovani makra znat presenter a moc se mi nelibi, ze v sablone budu volat {php} kdyz jej nepotrebuji. jedna se o staticky obsah vuci presenteru.
zhruba takto:
{mymacro filename-generovane_cisla.jpg}
vytvori:
/www/images/filename-generovane_cisla.jpg
mam podchycen stav, ze kdyz se mi zmeni sablona anebo nesedi vysledny obrazek ze zdrojem, tak se provede pregenerovani, tj. maznuni zkompilovane sablony z temp-u a znovu-pregenerovani sablony.
…snad jsem to vysvetlil srozumitelne. pomuze nekdo?
j3.
- jiri.pudil
- Nette Blogger | 1032
$presenter
bez podtržítka; registrovat makro v
templatePrepareFilters
je dobrý nápad, jde to
například takto:
public function templatePrepareFilters($template)
{
$latte = new Nette\Latte\Engine;
$set = new Nette\Latte\Macros\MacroSet($latte->compiler);
$set->addMacro('action', 'echo $presenter->action;');
$template->registerFilter($latte);
}
EDIT: Hodný strýček Google objevil totok.
Editoval jiri.pudil (11. 3. 2013 18:45)
- j3nda
- Člen | 12
diky.
presne tak jsem to udelal.
a od makra
{img @path/to/my-image.jpg 320x200xMethod 'border:1 solid black' 'filter:watermark=source/to/image.png; arg1=val1; argN=valN' output:jpg=90"}
upustil a vyresil to prave filtrem.
PRESENTER:
public function templatePrepareFilters($template) {
$template->registerFilter(new \s2\templating\webloader\filters\ImageFilter($this, $this->template->basePath));
parent::templatePrepareFilters($template);
}
IMAGE-FILTER:
public function __invoke($code) {
return preg_replace_callback('/'.static::TAG_START.'(.+)'.static::TAG_END.'/', array(&$this, 'handle'), $code, -1, $count);
}
koho by zajimaly podrobnosi, necht tady vznese dotazy – rad mu odpovim. :)
j3
Editoval j3nda (12. 3. 2013 17:47)