Если в компоненте меню разрешить несколько активных пунктов, то активными будут считать все пункты по цепочке до открытого раздела/страницы.
Но вот, если у вас в меню есть пункт "Главная", ведущий на корень "/", то при переходе на любую вторичную страницу "Главная" будет считаться активным пунктом. По логике это верно, но выглядит странно, когда в главном меню активны 2 пункта (визуально) одного уровня вложенности.
Для исправления этой ошибки, можно прописать в reuslt_modifier.php такой код:
Немного поясню:
Здесь считаем число активных пунктов и определяем, есть ли в меню ссылка на корень.
Если активных пунктов больше одного и есть ссылка на корень, то снимаем флаг SELECTED с пункта меню "Главная".
Но вот, если у вас в меню есть пункт "Главная", ведущий на корень "/", то при переходе на любую вторичную страницу "Главная" будет считаться активным пунктом. По логике это верно, но выглядит странно, когда в главном меню активны 2 пункта (визуально) одного уровня вложенности.
Для исправления этой ошибки, можно прописать в reuslt_modifier.php такой код:
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); $iMainKey = false; $iSelectedCount = 0; foreach($arResult as $key=>$arItem) { $iSelectedCount += ($arItem["SELECTED"]) ? 1 : 0; if($arItem["LINK"]===SITE_DIR) $iMainKey = $key; } if(is_numeric($iMainKey) && $iSelectedCount > 1) { $arResult[$iMainKey]["SELECTED"] = false; } |
Немного поясню:
Здесь считаем число активных пунктов и определяем, есть ли в меню ссылка на корень.
Если активных пунктов больше одного и есть ссылка на корень, то снимаем флаг SELECTED с пункта меню "Главная".