Adresárová štruktúra pre viacej šablón → v2.0
- martin.kovac
- Člen | 1
Aká je správna forma adresárovej štruktúry ak chcem použiť viacej druhov šablón? Dočítal som sa akurát že to ide cez moduly ale nepodarilo sa mi to rozchodiť. Najlepšie by bolo aby adresár templates ostal tak ako je a v ňom by som mal ďalšie šablóny napr. GreenTemplate, RedTemplate, BlueTemplate atď. A až potom v nich bude základný @layout a v podadresároch ďalšie *.latte súbory podľa názvu akcie. Používam verziu 2.0.
Stručne povedané mám otázky ohľadne:
- aká je správna adresárová štruktúra pre viacej šablón alebo ako dosiahnuť takú akú chcem
- kde všade mám čo ponastavovať aby som docielil želaný výsledok (bootstrap.php, confing.ini, …)
- akým spôsobom potom môžem dynamicky meniť šablónu napr. podľa údajov z DB
Ďakujem
- Šaman
- Člen | 2666
Např. takhle:
<?php
// tohle das do basepresenteru
/**
* Prepsana metoda z Nette
* Zmeni cestu k sablonam layoutu: APP_DIR/Module/templates/theme/...
* Pro jistotu se s nejnizsi prioritou bude hledat i v puvodnim adresari
*/
public function formatLayoutTemplateFiles($presenter, $layout)
{
$appDir = Environment::getVariable('appDir');
$theme = Environment::getVariable('theme');
$path = '/' . str_replace(':', 'Module/', $presenter);
$templatesTheme = '/templates/' . $theme;
$pathP = substr_replace($path, $templatesTheme, strrpos($path, '/'), 0);
$list = array(
"$appDir$pathP/@$layout.latte",
"$appDir$pathP.@$layout.latte",
"$appDir$pathP/@$layout.phtml",
"$appDir$pathP.@$layout.phtml",
);
while (($path = substr($path, 0, strrpos($path, '/'))) !== FALSE) {
$list[] = "$appDir$path$templatesTheme/@$layout.latte";
$list[] = "$appDir$path$templatesTheme/@$layout.phtml";
}
$list = array_merge($list, parent::formatLayoutTemplateFiles($presenter, $layout));
return $list;
}
?>
A výsledek je pro modul ‚Modul‘, presenter ‚Presenter‘, pohled ‚view‘ a vzhled ‚theme‘ toto:
<?php
/NetBeansProjects/pokus/document_root/../app/ModuleModule/templates/theme/Presenter/@view.latte
/NetBeansProjects/pokus/document_root/../app/ModuleModule/templates/theme/Presenter.@view.latte
/NetBeansProjects/pokus/document_root/../app/ModuleModule/templates/theme/Presenter/@view.phtml
/NetBeansProjects/pokus/document_root/../app/ModuleModule/templates/theme/Presenter.@view.phtml
/NetBeansProjects/pokus/document_root/../app/ModuleModule/templates/theme/@view.latte
/NetBeansProjects/pokus/document_root/../app/ModuleModule/templates/theme/@view.phtml
/NetBeansProjects/pokus/document_root/../app/templates/theme/@view.latte
/NetBeansProjects/pokus/document_root/../app/templates/theme/@view.phtml
/NetBeansProjects/pokus/document_root/../app/ModuleModule/templates/Presenter/@view.phtml
/NetBeansProjects/pokus/document_root/../app/ModuleModule/templates/Presenter.@view.phtml
/NetBeansProjects/pokus/document_root/../app/ModuleModule/templates/@view.phtml
/NetBeansProjects/pokus/document_root/../app/templates/@view.phtml
?>
Použije se první nalezený soubor.
Podobně si uprav ještě metodu formatTemplateFiles
Editoval Šaman (17. 12. 2010 11:31)
- cirdaz
- Člen | 21
Já jsem to aplikoval a vykresluje mi to divně
viz
…/AdminModule/templates/default/Default/@default.latte
přitom ten soubor se jmenuje takto a je v jiné adresářové
struktuře..
/AdminModule/templates/default/Default.default.latte
Nevíte čím to bude nebo špatně chápu načítání templatů