我有一个菜单项计数器,它基本上将增量值作为一个类添加到菜单系统中:
<?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重置的事实(尽管#1在#2接管的地方没有被激活)。我还没弄清楚为什么,但似乎#2是#1的延续。虽然我希望每个人都应该从1开始增量。
我不能在这里使用重置。有什么明显的我错过了PHP可以在这里处理,除了我的CMS对计数器的方式吗?
非常感谢任何指针。感谢
更新,实际使用的代码:
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>';
}
答案 0 :(得分:2)
使用static
变量时,变量的值不会在后续执行相同代码之间重置。这是static
的明确目的。如果你不想要这种行为,请摆脱它。