我有一个菜单项计数器,基本上将增量值作为一个类添加到菜单系统:
<?php
if ($element['#original_link']['depth'] == 1) {
static $counter = 0;
$counter++;
$class = 'count-' . $counter;
}
$output = 'some output code build';
return '<li class="' . $class . '">' .$output .'</li>';
?>
请注意,代码位于每个菜单项内(在循环或数组之外)。该代码将简单地输出无序列表的列表,没有 UL:
<li class="count-1">One</li>
<li class="count-2">Two</li>, ...etc.
这工作正常,直到我更改菜单的来源。
1)。一种是使用我的CMS的系统菜单,
2)。后者正在使用该系统菜单的块输出,
并且两者都输出类似的菜单结构,除了后者从 #1 继续计数器而不是从 1 重置(尽管一旦 #2 接管该位置,#1 就不会被激活)。我还没弄清楚为什么,但似乎#2 是#1 的延续。虽然我希望每个都应该从 1 开始递增。
我不能在这里使用重置。除了我的 CMS 对计数器的处理方式之外,还有什么明显的我错过了 PHP 可以在这里处理的事情吗?
任何指针将不胜感激。谢谢
更新,实际使用的代码:
function mytheme_menu_link(array $variables) {
//dpm($variables);
$element = $variables['element'];
$sub_menu = '';
if ($element['#below']) {
$sub_menu = drupal_render($element['#below']);
}
if ($element['#original_link']['menu_name'] == variable_get('menu_main_links_source', 'main-menu')) {
if ($element['#original_link']['depth'] == 1) {
static $counter = 0;
$counter++;
$element['#attributes']['class'][] = 'count-' . $counter;
}
}
$output = l($element['#title'], $element['#href'], $element['#localized_options']);
return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n";
}
/**
* Implements theme_menu_tree()
No helpful variables, except for a flattened render of tree
*/
function mytheme_menu_tree__main_menu($variables) {
return '<ul class="menu">' . $variables['tree'] . '</ul>';
}