Из коробки в 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(
