2010-09-02 137 views
0

默認情況下,博客頁面中的節點鏈接包含blog_usernames_blog(管理員的博客),comment_add(添加新評論)和node_read_more(閱讀更多)。Drupal 6中的主節點鏈接

我需要擺脫它們中的前兩個,並更改node_read_more中的文本。

我創建了一個在我的主題命名爲$themenamepreprocess_node到的template.php功能,與此內容:

function mytheme_preprocess_node(&$vars, $hook){ 
    $node = $vars['node']; 
    //blog node, not in full node page 
    if($vars['node']->type == 'blog' AND !$vars['page']){ 
     $vars['node']->links['node_read_more']['title'] = t('My custom read more here'); 
     unset($vars['node']->links['blog_usernames_blog']); 
     unset($vars['node']->links['comment_add']); 
    } 
    //debug: 
    echo "<!-- DEBUG\n"; 
    print_r($vars['node']->links); 
    echo "\n-->"; 
} 

但它不工作;當我在函數的最後打印$vars['node']->links時,鏈接數組完全是我想要的;但是當頁面呈現時,會顯示舊的默認鏈接。

爲什麼? 我如何主題節點鏈接只是爲了一些內容類型,並且只在節點列表頁面中使用主題功能?

P.S:我清除緩存和主題註冊表每次嘗試之前;)

回答

1

第一:你應該測試在$掛鉤,否則這種處理功能將在每一個地方被調用。即使您在大型服務器上運行小型站點,它也會使您的站點停止運行。

第二:如果print_r打印出正確的鏈接,那麼肯定代碼是/ run,不需要擔心主題註冊表。

現在,您可能正在查看錯誤的主題鉤子。 theme_links是你會想要的。 http://api.drupal.org/api/function/theme_links/5

function mytheme_preprocess_links(&$vars, $hook){ 
    if ($hook == 'links') { 
     var_dump($vars); 
     unset($vars['links']['blog_usernames_blog']); 
    } 
} 
+0

感謝您的建議,他們真的很感激,即時通訊新的drupal ..但你寫了錯誤的例子嗎?我看到你的例子使用theme_preprocess_node而不是theme_link,你指出 – Strae 2010-09-02 17:35:11

+0

對不起。的確,我寫錯了這個功能。編輯它。 – berkes 2010-09-03 07:39:43

+0

mmh ...在api.drupal.org沒有'theme_preprocess_links',也沒有任何'* _preprocess_links' ...你的意思是'hook_link_alter'? – Strae 2010-09-03 19:37:48