到目前为止,我总是硬编码某个页面应该使用的页面模板,或者基于URL,或者是什么类型的节点。
如果有一种方法可以选择使用哪个tpl文件,那么真正有用的就是节点编辑表单。这将允许用户随意在不同的页面布局之间轻弹。
有没有人知道解决这个问题的好方法,或者解决它的问题?
答案 0 :(得分:2)
ThemeKey将允许您根据路径或其他条件加载主题。您可以使用其他方法,例如利用template.php的preprocesser函数,并使用hook_form_alter将其挂钩,并提供一种切换文件的方法。
答案 1 :(得分:1)
我最后为模板文件添加了一个新的词汇表(在我的情况下,VID为2),然后将其转换到我的template.php中的页面预处理器中:
function phptemplate_preprocess_page(&$vars) {
if (count($vars[node]->taxonomy)>0)
foreach ($vars[node]->taxonomy as $term)
$template = $term->vid == 2 ? $term->name : NULL;
if ($template) $vars['template_files'][] = "template-".preg_replace("/[^a-zA-Z0-9s]/", "", strtolower($template));
}
现在,如果我在一个名为A Green Page!
的分类术语中有一个节点,它将查找template-agreenpage.tpl.php
作为模板文件。
答案 2 :(得分:0)
我也想要这个功能,所以我创建了一个模块来为节点模板做这件事。您可以在此处找到它:http://drupal.org/project/template-picker