Oddělelní cache adresáře pro šablony
- knyttl
- Člen | 196
Ahoj,
v BasePresenteru dědím funkci createTemplate tak, abych mohl oddělit výsledek LatteFilteru do oddělených adresářů:
<?php
protected function createTemplate() {
$template = new FileTemplate;
$dir = Environment::getVariable('tempDir') . '/' . $this->language . '/';
umask(0000); @mkdir($dir, 0777);
$template->setCacheStorage( new FileStorage( $dir ) );
...
}
?>
To by fungovalo – generuje mi to hezky adresáře v cachi podle jazyka. Problém ale je, že v šablonách používám macro {cache}…{/cache}. Výsledek jejich cachování ale jde přímo do tempDir, nezávisle na jazyku. Výsledek je ten, že cache pro jednu jazykovou mutaci se akceptuje i pro druhou mutaci. Jak vnutím tomuto makru, aby používalo také adresáře závislé na jazyce?
Díky
- kravčo
- Člen | 721
Používaj vylepšené
makro {cache}...{/cache}
s parametrom:
{cache $lang}
Hello world!
{/cache}
- knyttl
- Člen | 196
Já to do teď měl takhle:
<?php
{cache "Events.$lang"}
...
{/cache}
?>
a tak to do teď fungovalo. Jak jsem ty šablony ale oddělil do adresářů, tak ta hlavní cache si asi myslí, že už vše bylo nacachované a udržuje jen první nacachovanou verzi (tedy jednu z cs nebo en, ale nikdy ne obě).
- kravčo
- Člen | 721
divím sa, že ti nové riešenie vôbec funguje…
-$template = new FileTemplate;
+$template = parent::createTemplate();
Nette templejty interne nepoužívajú FileStorage
, ale
PhpFileStorage
… Myslím, že si zbytočne komplikuješ život,
vŕtaš do vnútorných vecí Nette. Čo, myslím, v tomto prípade vôbec
nie nutné…