Více webů na jednom kódu – změna TEMPLATE

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

Zdravím,

mám dotaz :) snažím se na jednom kódu rozchodit dva weby, které mají stejnou funkčnost, akorát to jsou jiné jazykové mutace a tím pádem kromě toho že používají stejné funkce, tak každý vypadá úplně jinak.

Tzn že z adresáře www jsem si udělal
/www_cz
/www_sk

a teď bych potřeboval rozlišit ty templaty:
/app/templates_cz
/app/templates_sk

Jde to nějak pořešit jednoduše, aby se nemuselo překopávat nic v Nette\Application\UI\Presenter?

Duch.Veliky
Člen | 68
+
0
-

A ono když nad tim tak přemýšlím, tak asi celkově nic není chytré měnit v Nette\Application, aby to šlo také nějak v budoucnu jednoduše upgradovat na novou verzi… takže by to řešení bylo vhodné provést nějak až v BasePresenteru, což by šlo tím, že si tam jednoduše přepíšu funkce formatLayoutTemplateFiles() a formatTemplateFiles(), ale doufal jsem, že najdu nějaké jednodušší řešení :)

David Matějka
Moderator | 6445
+
+2
-

ano, formatLayoutTemplateFiles a formatTemplateFiles je presne to, co hledas :)

a v nette samotnem (nebo v jinych knihovnach co pouzivas) bys opravdu nemel nic menit…

Duch.Veliky
Člen | 68
+
0
-

Jo nakonec se to ukázalo zřejmě jako nejsnažší řešení. Až vyjde nové nette, tak si případně jen porovnám co se v těch funkcích změnilo a zase si to změním v Base Presenteru

<?php
/**
     * Formats layout template file names.
     * @return array
     */
    public function formatLayoutTemplateFiles()
    {
        $name = $this->getName();
        $presenter = substr($name, strrpos(':' . $name, ':'));
        $layout = $this->layout ? $this->layout : 'layout';
        $dir = dirname($this->getReflection()->getFileName());
        $dir = is_dir("$dir/templates_".$this->lang) ? $dir : dirname($dir);
        $list = array(
            "$dir/templates_".$this->lang."/$presenter/@$layout.latte",
            "$dir/templates_".$this->lang."/$presenter.@$layout.latte",
            "$dir/templates_".$this->lang."/$presenter/@$layout.phtml",
            "$dir/templates_".$this->lang."/$presenter.@$layout.phtml",
        );
        do {
            $list[] = "$dir/templates_".$this->lang."/@$layout.latte";
            $list[] = "$dir/templates_".$this->lang."/@$layout.phtml";
            $dir = dirname($dir);
        } while ($dir && ($name = substr($name, 0, strrpos($name, ':'))));
        return $list;
    }


    /**
     * Formats view template file names.
     * @return array
     */
    public function formatTemplateFiles()
    {
        $name = $this->getName();
        $presenter = substr($name, strrpos(':' . $name, ':'));
        $dir = dirname($this->getReflection()->getFileName());
        $dir = is_dir("$dir/templates_".$this->lang) ? $dir : dirname($dir);
        return array(
            "$dir/templates_".$this->lang."/$presenter/$this->view.latte",
            "$dir/templates_".$this->lang."/$presenter.$this->view.latte",
            "$dir/templates_".$this->lang."/$presenter/$this->view.phtml",
            "$dir/templates_".$this->lang."/$presenter.$this->view.phtml",
        );
    }
?>

Kdyby ještě někoho napadlo něco chytřejšího, tak sem s tím :)

Díky za odpověď

Editoval Duch.Veliky (29. 8. 2014 19:20)

castamir
Člen | 629
+
0
-

ty *.phtml nejspíš nepoužíváš, takže bych je tam ani nedával =)