Změna adresáře šablon na základě nějaké podmínky

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

Ahoj,

nedaří se mi přijít na to, jak na základě nějaké podmínky globálně změnit adresář šablon.

Našel jsem k tomu pouze Environment::setVariable(„templatesDir“), což je deprecated. Alternativu jsem nenašel.

Díky.

EDIT: Mimochodem odkaz na Presenter API z https://doc.nette.org/…n/presenters nefunguje.

Editoval knyttr (26. 9. 2010 16:13)

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Vyřešil bych to asi přepsáním metody formatTemplateFiles v BasePresenteru. Tam můžeš pořešit i tu podmínku, kde bych buď volal return parent::formatTemplateFiles($presenter, $view); anebo prostě vrátil jiné pole možných adres šablon. Závisí to samozřejmě na tom, o jakou podmínku jde.

knyttl
Člen | 196
+
0
-

To zní dost složitě, fakt bych chtěl jen ten adresář. Budu-li konkrétní, jde mi o mobilní verzi. Něco jako:

Pokud je doména == m.domena.cz, tak pouzij sablony v adresari templates.m, pri stejne vnitrni strukture jako templates.

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Metoda formatTemplateFiles vrací pole možných adres, kde by se měla nacházet odpovídající šablona, a Nette to pole postupně prochází a zkouší je. Přepsáním této metody si lze upravit, kde má ty šablony hledat. V tomto případě by mohlo fungovat následující řešení:

public function formatTemplateFiles($presenter, $view)
{
	$domain = $this->getHttpRequest()->getUri()->getHost(); // získání domény
	if ($domain === 'm.domena.cz') {
		$appDir = Environment::getVariable('appDir');
		$path = '/' . str_replace(':', 'Module/', $presenter);
		$pathP = substr_replace($path, '/templates.m', strrpos($path, '/'), 0); // zde zadávám ten alternativní adresář
		$path = substr_replace($path, '/templates.m', strrpos($path, '/'));
		return array(
			"$appDir$pathP/$view.phtml",
			"$appDir$pathP.$view.phtml",
			"$appDir$path/@global.$view.phtml",
		);
	}

	return parent::formatTemplateFiles($presenter, $view);
}

Editoval vojtech.dobes (27. 9. 2010 23:53)

knyttl
Člen | 196
+
0
-

Super, díky moc. Každopádně si myslím, že tohle by mělo jít udělat snáze. Jako možná v nějaké budoucí verzi Nette…

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Na to téma už se otevírá diskuze: https://forum.nette.org/…emplatefiles