Cachování / Necachování šablony s linky na soubory
- jarks
- Člen | 94
Dobrý den,
mám aplikaci kde si kodéři vkládají do šablon spoustu odkazů na
soubory. K tomu mají adresář dokumenty
. Tam soubor umístí a
použijí makro
{file_link Název dokumentu:název souboru}
. Např.:
<ul>
<li>{file_link Seznam pravidel pro vytváření pravidel:pravidla.pdf}</li>
</ul>
Makro {file_link} ověří existenci souboru, pokud existuje vrátí link
(<a href>
), pokud neexistuje, napíše, že neexistuje. To
funguje. Problém ale je, že tím, že soubor nahrajete nebo nenahrajete do
adresáře se šablona nezmění a nepřegeneruje se. Makro se znovu nezavolá.
Takže uživatel
- napíše makro do šablony, ale zapomene nakopírovat soubor do vyhrazeného adresáře
- nakopíruje soubor aby to napravil, obnoví stránku a nic, protože šablona je cachnutá a nezměnila se
Můžete mi prosím poradit co s tím? Můžu nějak určit, aby se části šablony necachovaly? Nebo musím nějak (jak?) vypnout cachování celé šablony (to by asi podstatně snížilo výkon).
Našel jsem makro {cache},
ale to dělá opak – cachuje. Šablony se ale cachují sami, je to jejich
základní vlastnost, takže nevím proč. A makro {noCache}
podle
toho co jsem našel na fóru asi neexistuje.
Díky.
- Filip Procházka
- Moderator | 4668
Šablony se automaticky přegenerují když v souboru něco změníš. Co se týče tvého makra, nenapsal jsi jak ho máš implementované. Můžeš to mít dvě způsoby.
- překlad makra při překladu šablony – hloupé makro
{file_link nazev:soubor}
se přeloží jako
<a href="/dokumenty/soubor.pdf">nazev</a>
a může dělat problémy, protože ti vznikne HTML a to, jak víme, kontrolovat existenci souborů neumí :)
- chytré makro
přeloží se jako
<?php echo Document::link("nazev", "soubor.pdf"); ?>
A třída Document
pak soubor kontroluje a dělá co
potřebuješ.
- Patrik Votoček
- Člen | 2221
Pokud pracuješ s makry (upravuješ / přidáváš) je bohužel nutné promazávat cache ručně aby se změny projevili.