Здравствуйте. Помогите пожалуйста сделать так, чтоб в каждом пункте меню выводилась цифра, соответствующая номеру пункта меню.
Пока смог вывести следующее:
<?php
function phptemplate_menu_item_link($link) {
if (empty($link['localized_options'])) {
$link['localized_options'] = array();
}
if($link['menu_name']=='primary-links') {
return '<span>1</span>' .l($link['title'], $link['href'], $link['localized_options']) ;
}
return l($link['title'], $link['href'], $link['localized_options']);
}
?>
Сейчас выводится цифра "1" в каждом пункте, а надо чтоб шло по возрастающей. Не хватает знаний пхп, помогите кто разбирается.
Комментарии
Привет а на jquery не подойдет?
<?php
function phptemplate_menu_item_link($link) {
global $menu_item_count;
if(!isset($menu_item_count)){
$menu_item_count = 0;
}
if (empty($link['localized_options'])) {
$link['localized_options'] = array();
}
if($link['menu_name']=='primary-links') {
return ''.++$menu_item_count.'' .l($link['title'], $link['href'], $link['localized_options']) ;
}
return l($link['title'], $link['href'], $link['localized_options']);
}
?>
Dan, спасибо. Почти то что нужно, но тут подсчитывается общее количество пунктов включая выпадающее меню, а нужно чтоб счетчик переключался для каждого ul отдельно.
Через цсс не подходит:
- через фон,- не известно сколько будет пунктов, поэтому отпадает
- через list-style-type: decimal-leading-zero (первый должен быть нуль) - тоже не подходит, тк генерируется с точкой в конце цифры и должен работать ховер(меняться color)
Вариант с яваскрипт рассматривать буду только в крайнем случае, если не получится решить нормально.
Привет! Сорри, только сегодня высвободился.
Получилось следующее:
<?php
/**
* Implementation of theme_menu_item_link()
*/
function THEMENAME_menu_item_link($link) {
if (empty($link['localized_options'])) {
$link['localized_options'] = array();
}
// Добавляем нумерацию только в 'primary-links'
if($link['menu_name'] == 'primary-links'){
// Это глобальный массив, в нём содержаться счётки подменю.
global $primary_menu_link_counter;
if(!isset($primary_menu_link_counter))
$primary_menu_link_counter = array();
// Основная магия. У всех подменю есть plid - parent ID
// Соответственно для каждого plid у нас будет свой счётчик.
// Таким образом получаем отдельную нумерацию для каждого подменю
if($link['plid']){
$link['title'] = ''.(int)$primary_menu_link_counter[$link['plid']]++.' '.$link['title'];
}
$link['localized_options']['html'] = true;
}
return l($link['title'], $link['href'], $link['localized_options']);
}
?>
Проверил, работает.
PS: если нужна нумерация с единицы, то заменяем "(int)$primary_menu_link_counter[$link['plid']]++" на "++$primary_menu_link_counter[$link['plid']]"
Спасибо, то что нужно.