více šablon pro jednu aplikace v nette 2
- zap
- Člen | 4
Potřeboval bych vytvořit více verzí stránek poháněných stejným kódem. Rozdíl by se tedy opravdu týkal pouze složky /www a /app/templates. Je možné nějakým způsobem
- nastavit podle .htaccess přepisovacího pravidla např. v bootstrap.php jaká složka se šablonami se má použít?
- vytvořit dvě subdomény např. original a kopie, kde original by obsahovala kompletní Nette aplikaci a kopie by obsahovala pouze index.php, vlastní obrázky a vlastní složku app/templates tak, aby se obsluha požadavků směřovala do original?
V nejhorším případě můžu celý projekt zkopírovat, ale nelíbí se mi představa údržby a rozvoje dvou či více kopií stejných kódů :)
Díky za tipy
- Šaman
- Člen | 2666
zap napsal(a):
- vytvořit dvě subdomény např. original a kopie, kde original by obsahovala kompletní Nette aplikaci a kopie by obsahovala pouze index.php, vlastní obrázky a vlastní složku app/templates tak, aby se obsluha požadavků směřovala do original?
Tohle by mělo jít. Budeš mít dva adresáře document_root
a
oba budou v indexu odkazovat na stejný bootstrap.php
. Každý
document_root
bude obsahovat svoje .CSS, .JS, a .IMG soubory (zde
asi případná duplicita bude) a každý bude mít jinou adresu.
Jinak pokud bys chtěl přímo na stránce měnit design tak by to mohlo jít vyřešit nějakým přepínačem v šabloně @layoutu. Přilinkuješ jen jiný .CSS a každý design by měl svůj adresář.
Editoval Šaman (10. 12. 2010 15:37)
- Šaman
- Člen | 2666
Aha, tobě jde i o šablony. Tak je hoď taky do
document_rootu
a přetěž si metodu
formatLayoutTemplateFiles
tak, aby je tam hledalo:
<?php
// tohle das do basepresenteru
/**
* Prepsana metoda z Nette
* Zmeni cestu k sablonam layoutu: WWW_DIR . "/templates/$presenter.phtml" (nebo /templates/@layout.phtml)
*/
public function formatLayoutTemplateFiles($presenter, $layout)
{
$presenterLower = strtolower($presenter);
//$list = parent::formatLayoutTemplateFiles($presenter, $layout);
$list = array();
$list[] = WWW_DIR . "/templates/$presenterLower.phtml";
$list[] = WWW_DIR . "/templates/$layout.phtml";
$list[] = WWW_DIR . "/templates/@layout.phtml";
return $list;
}
?>
Tohle mi hledá layout podle jména presenteru, nebo podle zadaného layoutu
(metodou setLayout()
) a nebo v souboru @layout.phtml
ale všechno v adresáři WWW_DIR/templates
.
//Edit: viz. dokumentace.
Stejně si můžeš pohrát i s metodou formatTemplateFiles
,
která zodpovídá za hledání nelayoutových šablon.
A jak tak na tu dokumentaci koukám, tak ideální by bylo zkopírovat si ty
metody přímo z Nette a jen místo
$appDir = Environment::getVariable('appDir');
použít cestu
k tvému document_rootu
. Pak ti budou fungovat šablony podle
stávajících pravidel Nette, jen celá složka /templates bude jinde.
Editoval Šaman (10. 12. 2010 15:53)