У меня есть счетчик пунктов меню, которые в основном добавить дополнительную ценность в качестве класса в системе меню:РНР сброс счетчика силы до 0
<?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>';
}
Спасибо, к сожалению, нет инкрементного значения при удалении статики, просто потому, что этот кусок кода не находится в цикле. Все имеют схожие классы = "count-1". – swan
Тогда я не совсем понимаю вопрос. Пожалуйста, предоставьте больше кода, предпочтительно полный самодостаточный пример, демонстрирующий проблему. – deceze
Добавлен список пунктов меню и его контейнерные функции UL. благодаря – swan