Změna template složky a document rootu

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

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

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)

joker0cz
Člen | 16
+
0
-

No jasný, tak nějak jsem to myslel. Mockrát děkuji..