Html Drupal覆盖自定义菜单模板
我创建了一个名为“sub-top nav”的自定义菜单,现在我想覆盖html输出。特别是我想为每个项目添加一个独特的类,如 这就是它的外观:Html Drupal覆盖自定义菜单模板,html,drupal,Html,Drupal,我创建了一个名为“sub-top nav”的自定义菜单,现在我想覆盖html输出。特别是我想为每个项目添加一个独特的类,如 这就是它的外观: <div class="clear-block block block-menu" id="block-menu-menu-sub-top-nav"> <div class="content"> <ul class="menu"> <li class="leaf first">&l
<div class="clear-block block block-menu" id="block-menu-menu-sub-top-nav">
<div class="content">
<ul class="menu">
<li class="leaf first"><a title="Test 1" href="/test1">Test 1</a></li>
<li class="leaf"><a title="Test 2" href="/test2">Test 2</a></li>
<li class="leaf active-trail"><a class="active" title="Test 3" href="/test3">Test 3</a></li>
<li class="leaf last"><a title="Test 4" href="/test4">Test 4</a></li>
</ul>
</div>
</div>
我想把它改成:
<div class="clear-block block block-menu" id="block-menu-menu-sub-top-nav">
<div class="content">
<ul class="menu">
<li class="leaf test1 first"><a title="Test 1" href="/test1">Test 1</a></li>
<li class="leaf test2"><a title="Test 2" href="/test2">Test 2</a></li>
<li class="leaf test3 active-trail"><a class="active" title="Test 3" href="/test3">Test 3</a></li>
<li class="leaf test4 last"><a title="Test 4" href="/test4">Test 4</a></li>
</ul>
</div>
</div>
这会给我更多的造型能力。
知道这是怎么回事吗
提前谢谢 您可以使用theme的template.php中的函数对这些菜单项执行几乎任何您想要的操作,包括添加类、ID等。我现在就可以使用它了。这段代码可能也会帮助其他人! 它进入yourtheme/template.php
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';
$class .= ' ' . preg_replace('/[^a-zA-Z0-9]/', '', strtolower(strip_tags($link)));
return '<li class="'. $class .'">'. $link . $menu ."</li>\n";
}
函数phptemplate\u菜单项($link,$has\u children,$menu='',$in\u active\u trail=FALSE,$extra\u class=NULL){
$class=($menu‘展开’:($has_children‘折叠’:‘叶’);
如果(!空($extra_class))
$class.=''.$extra_class;
如果($in_active_trail)
$class.='活动轨迹';
$class.=''.preg_替换('/[^a-zA-Z0-9]/','',strtolower(带标签($link));
返回“”.$link.$menu. \n”;
}
Drupal 7使用主题菜单链接而不是主题菜单项
<?php
function theme_menu_link(array $variables) {
$element = $variables['element'];
$sub_menu = '';
if ($element['#below']) {
$sub_menu = drupal_render($element['#below']);
}
$output = l($element['#title'], $element['#href'], $element['#localized_options']);
return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n";
}
?>
在浏览了API之后,我终于找到了一个简单的解决方案,可以用同一个类标记根菜单(这对于只设置顶级菜单的唯一样式很有用,同时保持它们的动态友好性)。只需使用plid而不是mlid。我注意到顶级菜单的plid始终为0
function theme_menu_link(array $variables) {
$element = $variables['element'];
$sub_menu = '';
$element['#attributes']['class'][] = 'menu-' . $element['#original_link']['plid'];
if ($element['#below']) {
$sub_menu = drupal_render($element['#below']);
}
$output = l($element['#title'], $element['#href'], $element['#localized_options']);
$count = 1;
return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n";
}
函数主题菜单链接(数组$变量){
$element=$variables['element'];
$sub_菜单=“”;
$element['#attributes']['class'][='menu-'。$element['#original#u link']['plid'];
如果($element['#below'])){
$sub#u menu=drupal_render($element['#below']);
}
$output=l($element['#title']、$element['#href']、$element['#本地化选项']);
$count=1;
返回“.$output.$sub_菜单。”\n”;
}
好的,但它如何适用于自定义菜单?你能给我举个例子吗?“主题菜单链接而不是主题菜单链接”?这有什么意义?没错。“主题菜单链接而非主题菜单项”。