2011-03-04 99 views
17

我想修改我創建的Drupal 7主題中的HTML輸出。Drupal 7:修改菜單HTML輸出?

基本上,而不是< li> s僅包含純文本< a> s,我想在< a>中包含一些額外的HTML。

我知道可以修改Drupal中菜單創建的HTML。我可以在page.tpl.php中看到以下呼叫:

<?php print theme('links__system_main_menu', array(
     'links' => $main_menu, 
     'attributes' => array(
     'id' => 'main-menu', 
     'class' => array('links', 'clearfix'), 
    ), 
     'heading' => array(
     'text' => t(''), 
     'level' => 'h2', 
     'class' => array('element-invisible'), 
    ), 
    )); ?> 

它顯然調用主題函數,它創建輸出。修改輸出的一種方法是修改theme.inc中的theme_links函數,對嗎?

http://api.drupal.org/api/drupal/includes--theme.inc/function/theme_links

我也知道,你可以掛上了鉤在template.php文件來覆蓋它創建的HTML功能。我無法弄清楚如何創建實際的覆蓋功能。請有人指出我正確的方向嗎?

回答

18

你會做的是實現一個鉤子來修改輸出,而不是直接修改「theme.inc」文件。

例如,此頁面上公認的答案:Drupal Override Custom Menu Template


而且作爲一般規則,當你想修改的東西輸出,無論是implement a hook(在一個模塊或template.php文件)或者在存在這種情況時使用template with a predefined file name(當沒有模板已經存在時,您還可以使用模塊或主題modify the list of template suggestions)。

+0

很酷,正是我所需要的。謝謝! – 2011-03-06 04:35:35

+3

接受的答案使用Drupal 6中的theme_menu_item。Drupal 7中的等價物是theme_menu_item http://api.drupal.org/api/drupal/includes--menu.inc/function/theme_menu_link/7 – Rimian 2011-11-21 09:16:31

+0

@Rimian Drupal 7使用theme_menu_link而不是theme_menu_item。 – 2013-03-12 10:46:26