1

我正在尝试(未成功)添加两个并行目录作为 smarty (3) 的模板。

简而言之,我想创建一个基本模板和另一个自定义。如果自定义文件不存在,那么 smarty 应该使用肯定存在的基本模板。

已经有一些东西可以做到这一点?

当然,即使在导入时也可以使用。

4

1 回答 1

4

是的,您可以使用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

于 2013-07-19T02:02:06.863 回答