You are here

你问我答:$content变量,想扩展它的功能,比如添加node-page.tpl.php

问题:

G089h515r806,你好。
请问一下怎么定义$content这个变量。
我想在首页的时候调用node-front.tpl.php,术语的时候调用node-taxonomy.tpl.php,节点的时候调用node-page.tpl.php,默认情况下调用node.tpl.php
谢谢                             
         邓昌东

答复:

这个函数:
<?php
function _phptemplate_variables($hook, $vars = array()) {
  switch ($hook) {
    case 'node':
      $vars['template_files'] = array('node-'. $vars['nid']);
      break;
  }
  return $vars;
}
?>
你可以使用这种方法,如果用的是drupal5.X的话, 6.x我不知道这个方法是不是可行,不过也有相同的类似的方法.
就是在主题下面,建立一个template.php,然后向里面添加function _phptemplate_variables()函数,这个函数,里面根据你的实际作以下修改:
  $vars['template_files'] = array('node-'. ‘front');
  $vars['template_files'] = array('node-'. 'taxonomy');
  $vars['template_files'] = array('node-'. 'page');
 
这样你就可以在你的主题下面使用node-front.tpl.php,node-taxonomy.tpl.php,node-page.tpl.php,这些模板的用法和node-nodetype.tpl.php是一样的。不过你需要在代码中加上一些判断条件,判断哪个是front,哪个是taxonomy,哪个是page。
 
具体怎么判断我就不多说了。
你可以参看相关的手册,特别是节点的那部分。        

 

补充:这里还可以把 front,  taxonomy, page归纳为变量$path,   可以这样用:

  $vars['template_files'] = array('node-'.$path);

当然,前面你需要对$path进行一个处理。

Drupal版本: