2012-05-28 45 views
0

我有一個代碼可以在一臺服務器上運行,但不能在另一臺服務器上運行。基本上我們已經寫了一個模板文件,如果URL是discussion_forum,但它顯示的頁面沒有找到,應該使用它。drupal template.php不使用tpl文件

/* 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'。它正確顯示頁面。不知道這裏發生了什麼。它在其他服務器上工作正常。

+0

你可以在template.php中添加你添加的位置嗎?它是在preprocess_node,preprocess_page還是別的?只是提示,您可以使用arg()函數而不是獲取q查詢字符串。 –

+0

在_preprocess_page(&$ vars){...中使用它{....也嘗試過使用arg。即使這不起作用 – antnewbee

回答

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的哪個版本,因爲一些事情的版本之間改變這將有助於。