Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Drupal 通过管理区域选择模板?_Drupal_Templates_Drupal 6_Themes_Drupal Theming - Fatal编程技术网

Drupal 通过管理区域选择模板?

Drupal 通过管理区域选择模板?,drupal,templates,drupal-6,themes,drupal-theming,Drupal,Templates,Drupal 6,Themes,Drupal Theming,到目前为止,我一直在根据URL或节点类型硬编码某个页面应该使用什么页面模板 真正有用的是,如果有一种方法可以选择要使用的tpl文件,就在节点编辑表单中。这将允许用户在不同的页面布局之间随意切换 有没有人知道解决这个问题的好方法,或者一个彻底的解决方案 ThemeKey允许您根据路径或其他条件加载主题。您可以使用其他方法,例如利用template.php的预处理器函数,并使用hook_form_alter将其挂接,然后想出一种切换文件的方法。我最后为模板文件添加了一个新词汇表(在我的例子中,该词汇

到目前为止,我一直在根据URL或节点类型硬编码某个页面应该使用什么页面模板

真正有用的是,如果有一种方法可以选择要使用的tpl文件,就在节点编辑表单中。这将允许用户在不同的页面布局之间随意切换


有没有人知道解决这个问题的好方法,或者一个彻底的解决方案

ThemeKey允许您根据路径或其他条件加载主题。您可以使用其他方法,例如利用template.php的预处理器函数,并使用hook_form_alter将其挂接,然后想出一种切换文件的方法。

我最后为模板文件添加了一个新词汇表(在我的例子中,该词汇表的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
它将寻找
模板agreenpage.tpl.php
作为模板文件。

我也想要这个功能,所以我制作了一个模块来为节点模板做这件事。您可以在这里找到:

是的,我想我将添加一个填充有可能模板的CCK字段,然后使用预处理器函数根据该字段选择主题模板。一个简单的方法是使用以下术语设置分类词汇表:主题a、主题B、,主题C等。根据分类术语配置主题切换。你完了!