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 | 2668
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 | 2668
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)