2013-07-18 2 views
1

Я пытаюсь (неудачно) добавить два параллельных каталога в качестве шаблона для smarty (3).Smarty с несколькими параллельными шаблонами

Вкратце я хотел бы создать базовый шаблон и другой обычай. Если пользовательский файл отсутствует, то smarty должен использовать базовый шаблон, который определенно присутствует.

Уже есть что-то, что сделает это?

Конечно, это будет работать даже с импортом.

ответ

3

Да, вы можете указать несколько каталогов шаблонов, используя setTemplateDir.

Пример

<?php 

// setup template directories 
$smarty->setTemplateDir(array(
    './templates',   // element: 0, index: 0 
    './templates_2',   // element: 1, index: 1 
    '10' => 'templates_10', // element: 2, index: '10' 
    'foo' => 'templates_foo', // element: 3, index: 'foo' 
)); 

/* 
    assume the template structure 
    ./templates/foo.tpl 
    ./templates_2/foo.tpl 
    ./templates_2/bar.tpl 
    ./templates_10/foo.tpl 
    ./templates_10/bar.tpl 
    ./templates_foo/foo.tpl 
*/ 

// regular access 
$smarty->display('file:foo.tpl'); 
// will load ./templates/foo.tpl 

// using numeric index 
$smarty->display('file:[1]foo.tpl'); 
// will load ./templates_2/foo.tpl 

// using numeric string index 
$smarty->display('file:[10]foo.tpl'); 
// will load ./templates_10/foo.tpl 

// using string index 
$smarty->display('file:[foo]foo.tpl'); 
// will load ./templates_foo/foo.tpl 

// using "unknown" numeric index (using element number) 
$smarty->display('file:[2]foo.tpl'); 
// will load ./templates_10/foo.tpl 

?> 

Вы можете получить более подробную информацию по этому вопросу от Smarty.

http://www.smarty.net/docs/en/api.set.template.dir.tpl

и здесь

http://www.smarty.net/docs/en/resources.tpl#templates.from.specified.template.dir

+0

Я проверил это немного дальше, не слишком большого успеха, в надежде простой hireachy шкурок может быть заархивированы. Теоретически активация переменной (include_path) http://www.smarty.net/docs/en/variable.use.include.path.tpl (отключена по состоянию на 3.1) должна наследоваться от одного к другому, если один файл выходит из строя. Это не сработало для нас. Существует также функция, которую smarty вызывает для каждого неудавшегося шаблона, который можно было бы рассмотреть для патча, чтобы изменить приоритет или индекс массива dir шаблона. – luison

Смежные вопросы