drupal template.php不使用tpl文件

时间:2012-05-28 10:42:57

标签: templates drupal

我有一个代码可以在一台服务器上运行但在另一台服务器上运行。基本上我们编写了一个模板文件,如果URL是discussion_forum但它显示找不到页面,应该使用该文件。

    /* discussion forum templates */
    $querystring=$_GET['q'];
        echo $querystring; // THIS PRINTS page-not-found
    $querystring=explode('&',$_GET['q']);    

if(!isset ($vars['node']) && $querystring[0]=='discussion-forum'){
    $vars['template_files'] = array(); 
    $vars['template_files'][] = 'page-discussion_forum'; 
}
if (!isset ($vars['node']) && $querystring[0]=='discussion_forum_answer') { 
    $_SESSION['question_id']=$querystring[1];
    $vars['template_files'] = array(); 
    $vars['template_files'][] = 'page-discussion_forum_answer'; 
    }

if(!isset ($vars['node']) && $querystring[0]=='discussion_forum_search'){
    $vars['template_files'] = array(); 
    $vars['template_files'][] = 'page-discussion_forum_search'; 
}

当我在$querystring[0]=='discussion-forum'中使用page-not-found代替讨论论坛时。它正确显示页面。不知道这里发生了什么。它在其他服务器上运行良好。

1 个答案:

答案 0 :(得分:0)

要添加自定义tpl,我通常会在预处理节点中添加主题建议。

$vars['theme_hook_suggestions'][] = 'node____'.$vars['view_mode'];

所以你应该

function THEME_preprocess_node(&$vars, $hook) 
    $vars['theme_hook_suggestions'][] = 'page-discussion_forum_search';
 }

如果您确定使用哪个版本的drupal会有所帮助,因为其中一些版本会在版本之间发生变化。