Změna template složky a document rootu
- joker0cz
- Člen | 16
Dobrý den,
řeším jeden problém, potřeboval bych abych mohl měnit šablony, zkoušel jsem hledat ale nenalezl jsem nic co by mě pomohlo. Řešení by mělo odpovídat nette2.
Chtěl bych, aby se mi vždy načetla ta šablona, která odpovídá doméně. Příklad doména neco.cz ⇒ složka sites/neco_cz/template a z této složky vždy brát vzhled. Nikde sem ovšem nenašel jak správně skonfigurovat nette abych v teto složce měl jak www root tak i složku templates.
Předem díky za odpoveď.
- nanuqcz
- Člen | 822
Dobrý den, budete muset přepsat metody formatTemplateFiles a formatLayoutTemplateFiles v BasePresenteru (ze kterého dědí všechny ostatní presentery, takže změněná funkčnost se projeví všude).
Třeba takhle:
abstract class BasePresenter {
function formatTemplateFiles() {
$paths = parent::formatTemplateFiles();
foreach ($paths as $key => $path) {
$paths[$key] = str_replace('templates/', 'templates/' . $_SERVER['HTTP_HOST'] . '/'); // tento řádek si zřejmě upravíte podle sebe
}
return $paths;
}
function formatLayoutTemplateFiles() {
$paths = parent::formatLayoutTemplateFiles();
foreach ($paths as $key => $path) {
$paths[$key] = str_replace('templates/', 'templates/' . $_SERVER['HTTP_HOST'] . '/'); // tento řádek si zřejmě upravíte podle sebe
}
return $paths;
}
}
jak správně skonfigurovat nette abych v teto složce měl jak www root tak i složku templates.
Moc nechápu, jak to myslíte?
EDIT: Tak už asi chápu, chcete mít ve složce
templates
i css soubory, obrázky atd.? Pak bych na to šel asi
úpravou proměnné $basePath
, která se používá
v šabloně:
abstract class BasePresenter {
function beforeRender() {
parent::beforeReder(); // je dobré vždy (pro jistotu) zavolat
$this->template->basePath = $this->context->parameters['wwwDir'] . "/sites/$_SERVER[HTTP_HOST]/templates";
}
}
<link rel="stylesheet" type="text/css" href="{$basePath}/style.css"> // zde se automaticky doplní /sites/domena.cz/templates
Editoval nanuqcz (3. 3. 2012 1:15)