Drupal 7:修改菜单HTML输出?

Don*_*mas 17 drupal-7 drupal-themes

我正在尝试修改我正在创建的Drupal 7主题中的HTML输出.

基本上,我希望在<a>中包含一些额外的HTML,而不是仅包含带有文本的简单<a>的<li>.

我知道可以修改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'),
      ),
    )); ?>
Run Code Online (Sandbox Code Playgroud)

它显然调用了主题函数,它创建了输出.修改输出的一种方法是修改theme.inc中的theme_links函数,对吧?

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

我也知道你可以在template.php中放一个钩子来覆盖创建HTML的函数.我无法弄清楚如何创建实际的覆盖功能.有人能指出我正确的方向吗?

wil*_*aks 18

你要做的是实现一个钩子来修改输出,而不是直接修改"theme.inc"文件.

例如,此页面上接受的答案:Drupal覆盖自定义菜单模板


作为一般规则,当您想要修改某些内容的输出时,要么实现一个钩子(在模块中或活动主题的template.php中),要么在存在这种情况时使用带有预定义文件名模板(当没有模板已存在时,您还可以使用模块或主题修改模板建议列表.

  • 接受的答案使用了theme_menu_item,它是Drupal 6. Drupal 7中的等价物是theme_menu_item http://api.drupal.org/api/drupal/includes--menu.inc/function/theme_menu_link/7 (3认同)