我有一个名为 wellington 的 Drupal 主题,位于 \sites\all\themes\wellington。我希望覆盖 menu_item 函数并按照http://drupal.org/node/310356上的说明进行操作。
我想按照描述向 li 添加一个类。
我尝试命名函数 wellington_menu_item 并尝试 phptemplate_menu_item 但没有运气。我可以将打印语句放入函数中,这些语句会显示在屏幕上。
此外,我可以在返回字符串之前打印出返回字符串并且它是正确的,但是当菜单被渲染时,没有区别,它是正常的主要显示,即没有覆盖。
主题本身运行良好,我可以看到 CSS 和 HTML。
被难住了,有什么想法吗?
<?php
/**
* Theme override for theme_menu_item()
*/
function phptemplate_menu_item($link, $has_children, $menu = '', $in_active_trail = FALSE, $extra_class = NULL) {
$class = ($menu ? 'expanded' : ($has_children ? 'collapsed' : 'leaf'));
if (!empty($extra_class)) {
$class .= ' '. $extra_class;
}
if ($in_active_trail) {
$class .= ' active-trail';
}
// Add unique identifier
static $item_id = 0;
$item_id += 1;
$id .= ' ' . 'menu-item-custom-id-' . $item_id;
// Add semi-unique class
$class .= ' ' . preg_replace("/[^a-zA-Z0-9]/", "", strip_tags($link));
return '<li class="'. $class .'" id="' . $id . '">'. $link . $menu ."</li>\n";
}
?>
它在 page.tpl.php 中使用
<?php print theme('links', $primary_links); ?>