我正在尝试修改我正在创建的Drupal 7主题中的HTML输出。
基本上,而不是< li> s仅包含普通的< a> s with text,我想在<中包含一些额外的HTML。 a>。
我知道可以修改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的函数。我无法弄清楚如何创建实际的覆盖功能。有人能指出我正确的方向吗?
答案 0 :(得分: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。)