17

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

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

我知道可以修改由 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 的函数。我不知道如何创建实际的覆盖功能。有人可以指出我正确的方向吗?

4

1 回答 1

18

您要做的是实现一个挂钩来修改输出,而不是直接修改“theme.inc”文件。

例如,此页面上接受的答案:Drupal Override Custom Menu Template


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

于 2011-03-05T00:40:23.117 回答