Více webů na jednom kódu – změna TEMPLATE
- Duch.Veliky
- Člen | 68
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
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
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
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)