Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Сложное меню

00 голосов
6
Приветсвую! Требуется Ваша помощь!!!

Есть меню типа "ind"
следующего вида:
раздел 1 (ind), раздел 2 (ind), раздел 3 (ind), раздел 4 (ind)

есть меню "top" и связанное с ним "left"
следующего вида:
Цитата

категория 1 (top)
подкатегория 1.1 (left)
подкатегория 1.2 (left)
подкатегория 1.3 (left)
категория 2 (top)
категория 3 (top)
подкатегория 3.1 (left)
подкатегория 3.2 (left)
категория 4 (top)


При клике на "подкатегория 1.2 (left)" соответственно получаем:
Цитата

категория 1 (top)
подкатегория 1.1 (left)
подкатегория 1.2 (left)
подкатегория 1.3 (left)
категория 2 (top)
категория 3 (top)
подкатегория 3.1 (left)
подкатегория 3.2 (left)
категория 4 (top)

Т.е. все правильно подсвечивается, "категория 1 (top)" - неактивная ссылка, все вроде хорошо.

А вот как сделать чтоб при клике на "раздел 1 (ind)" попасть сразу на страницу "подкатегория 1.2 (left)" и чтоб подсветка меню раздела соответственно сохранилась при переходах по "подкатегория 1.3", "подкатегория 3.1" ну и т.д. в текущем разделе?

т.к. промежуточных страниц может не быть нет.
(т.е.:категория 1 (top), категория 3 (top) - не ссылки, остальные соответственно ссылки)

PS: так же учитывая, что "раздел 2 (ind)" это главная страница (если для этого пункта прописать путь "/", то данный пункт подсвечивается всегда, а если "/index.php" то при переходах по подкатегориям не подсечивается - что не есть правильно)
спросил 12 Фев, 13 от malagoi (380 баллов)

6 Ответы

00 голосов
на сколько я тебя понял, тебе надо чтобы по клику на категория 1 оно переходило на подкатегория 1.2
и светились они обе

тогда сделай просто категория 1 это index.php а в нем пересылку на подкатегория 1.2 светится будут обе ;)
ответил 12 Фев, 13 от Aesonne34 (140 баллов)
00 голосов
Нет, редирект отпадает однозначно...
Вроде уже решил вопрос, спасибо.
ответил 09 Март, 13 от malagoi (380 баллов)
00 голосов
У меня подобный вопрос.

Сайт usp86.ru
Предположим, нажимаем на ЗАКОНОДАТЕЛЬСТВО, открывается индексная страница раздела law/index.php и появляются вложенные пункты меню.
А необходимо, чтобы открывался сразу первый вложенный пункт, т.е. law/codecs/

Если напрямую в меню прописать, то вложенные пункты меню НЕ появятся, т.к. вероятно ссылка в главном меню не будет IS_SELECTED. Как исправить это, БЕЗ редиректа естественно?
ответил 03 Апр, 13 от ashkmn (700 баллов)
00 голосов
если устроит, я делал так:
в шаблоне меню:
Код
$men_1 = explode("/",$_SERVER["REQUEST_URI"]);
$men_2 = explode("/",$arItem["LINK"]);
if($men_1[1] == $men_2[1]){$men_="1";}else{$men_="2";}

if($men_==1)
 то пункт селект
else 
 пункт не селект

ну а ссылку прописывай куда угодно в разделе
ответил 29 Июль, 13 от malagoi (380 баллов)
00 голосов
Можно подробнее?
Пока пришлось сделать через header("Location: куданадо");
Но хотелось бы сделать по фэн-шую, так сказать.

Еще есть подозрение, что вместо поиска "/" в адресах можно использовать $arItem["DEPTH_LEVEL"], но как то это все загадочно)
ответил 01 Ноя, 13 от ashkmn (700 баллов)
00 голосов
Берем компонент menu, шаблон .default и правим:
было:
Код
<?foreach($arResult as $arItem):?>
   <?if($arItem["SELECTED"]):?>
      <li class="select"><a href="<?=$arItem["LINK"]?>"><?=$arItem["TEXT"]?></a></li>
   <?else:?>
      <li><a href="<?=$arItem["LINK"]?>"><?=$arItem["TEXT"]?></a></li>
   <?endif?>
<?endforeach?>

стало:
Код
<?foreach($arResult as $arItem):
   $men_1 = explode("/",$_SERVER["REQUEST_URI"]); //получаем первый раздел в котором находимся
   $men_2 = explode("/",$arItem["LINK"]); //получаем первый раздел ссылки меню
   if($men_1[1] == $men_2[1]){$men_="1";}else{$men_="0";} //если совпадают, то дальше подсветим выбранный раздел
   if($men_==1):?>
      <li class="select"><a href="<?=$arItem["LINK"]?>"><?=$arItem["TEXT"]?></a></li>
   <?else:?>
      <li><a href="<?=$arItem["LINK"]?>"><?=$arItem["TEXT"]?></a></li>
   <?endif?>
<?endforeach?>

данный код для разделов (для подразделов не подойдет, надо править)
если надо кину ссылку где работает.
ответил 06 Фев, 14 от malagoi (380 баллов)

Связанных вопросов не найдено