více šablon pro jednu aplikace v nette 2

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
zap
Člen | 4
+
0
-

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
+
0
-

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)

zap
Člen | 4
+
0
-

Tohle by fungovalo pouze v případě, že veškeré odchylky pokryje změna v CSS. Obávám se ale, že budu potřebovat v kopii trochu změnit šablony. A právě s tímto si nedokážu poradit, protože společný bootstrap.php bude automaticky pracovat také se stejnými šablonami, ne?

Šaman
Člen | 2666
+
0
-

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)

zap
Člen | 4
+
0
-

Díky moc, tohle už vypadá zajímavě :) Zkusím.