Из коробки в 1с-битрикс пункты меню не имеют класса, кроме активного пункта. Это не всегда удобно. Что бы присвоить каждому пункту меню Битрикс свой уникальный класс — нужно отредактировать файл template.php шаблона меню, который находится в /bitrix/templates/ваш-шаблон/components/bitrix/menu/top_horizontal (шаблон верхнего горизонтального меню).
Я сделал копию папки top_horizontal и назвал ее top_v_horizontal. Потом открыл файл template.php и заменил содержимое на свое:
Было так:
<? if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); if (empty($arResult)) return; /*$lastSelectedItem = null; $lastSelectedIndex = -1; foreach($arResult as $itemIdex => $arItem) { if (!$arItem["SELECTED"]) continue; if ($lastSelectedItem == null || strlen($arItem["LINK"]) >= strlen($lastSelectedItem["LINK"])) { $lastSelectedItem = $arItem; $lastSelectedIndex = $itemIdex; } } */ ?> <ul> <li><a href="<?=SITE_DIR?>"></a></li> <?foreach($arResult as $itemIdex => $arItem):?> <li<?if ($itemIdex == $lastSelectedIndex):?> class="current"<?endif;?>><a href="<?=$arItem["LINK"]?>"><?=$arItem["TEXT"]?></a></li> <?endforeach;?> </ul>
Стало так:
<? if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); if (empty($arResult)) return; /*$lastSelectedItem = null; $lastSelectedIndex = -1; foreach($arResult as $itemIdex => $arItem) { if (!$arItem["SELECTED"]) continue; if ($lastSelectedItem == null || strlen($arItem["LINK"]) >= strlen($lastSelectedItem["LINK"])) { $lastSelectedItem = $arItem; $lastSelectedIndex = $itemIdex; } } */ ?> <? $i=0; ?> <ul class="ul-top-menu"> <?foreach($arResult as $itemIdex => $arItem):?> <?$i++ //Увеличиваем на 1?> <li<?if ($itemIdex == $lastSelectedIndex):?> class="current"<?endif;?>><a href="<?=$arItem["LINK"]?>" class="menu-li<?=$i?>"><?=$arItem["TEXT"]?></a></li> <?endforeach;?> </ul>
Вся разница в том что я добавил счетчик и класс для ссылок меню а именно:
<? $i=0; ?>
и увеличиваем на 1
<?$i++ ?>
и в нужно месте добавляем
class="menu-li<?=$i?>"
Теперь для каждого пункта меню добавляется в конце номер.
Но это не все если Вы создали свой шаблон меню, то теперь его нужно присвоить тому меню для которого требовалось его применить. Сделать это можно в файле где находится вызов самого меню у меня это /bitrix/templates/ваш-шаблон/header.php
<? $APPLICATION->IncludeComponent('bitrix:menu', "top_v_horizontal", array( "ROOT_MENU_TYPE" => "top-v", "MENU_CACHE_TYPE" => "Y", "MENU_CACHE_TIME" => "36000000", "MENU_CACHE_USE_GROUPS" => "Y", "MENU_CACHE_GET_VARS" => array(), "MAX_LEVEL" => "1", "USE_EXT" => "N", "ALLOW_MULTI_SELECT" => "N" ) ); ?>
Строка
$APPLICATION->IncludeComponent('bitrix:menu', "top_v_horizontal", array(