Меню битрикс, стандартное, как присвоить уникальные id пунктам меню

Тема в разделе "Битрикс", создана пользователем runyugin, 24 мар 2014.

Модераторы: mrLom, puagardian
  1. runyugin

    runyugin Постоялец

    Регистр.:
    30 июн 2013
    Сообщения:
    54
    Симпатии:
    4
    Меню битрикс, стандартное, как присвоить уникальные id пунктам меню, чтобы задать каждому пункту уникальный стиль, меню формируется на основании инфаблока.
     
  2. Alexeina66

    Alexeina66

    Регистр.:
    26 авг 2013
    Сообщения:
    299
    Симпатии:
    278
    нужно найти файл который отвечает за вывод пунктов меню..там соответственно..соориентируйте по разметке html там div'ы если да то то очень просто <div id="1"> .....</div>. В CSS .1 {background: #000; font: 12px; ну это к примеру }
     
  3. runyugin

    runyugin Постоялец

    Регистр.:
    30 июн 2013
    Сообщения:
    54
    Симпатии:
    4
    спасибо за отписку для набора сообщений, только просьба по теме! Инфаблоки значит динамическое построение меню!
     
  4. Alexeina66

    Alexeina66

    Регистр.:
    26 авг 2013
    Сообщения:
    299
    Симпатии:
    278
    Ну и что что динамическое у меня тоже на сайте динамика...однако переменные обернуты в дивы с присвоенными id. Вы код то выложите что у вас там?
     
  5. runyugin

    runyugin Постоялец

    Регистр.:
    30 июн 2013
    Сообщения:
    54
    Симпатии:
    4
    Код:
    <?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
    
    <?if (!empty($arResult)):?>
    <ul id="horizontal-multilevel-menu">
    
    <?
    $previousLevel = 0;
    foreach($arResult as $arItem):?>
    
        <?if ($previousLevel && $arItem["DEPTH_LEVEL"] < $previousLevel):?>
            <?=str_repeat("</ul></li>", ($previousLevel - $arItem["DEPTH_LEVEL"]));?>
        <?endif?>
    
        <?if ($arItem["IS_PARENT"]):?>
    
            <?if ($arItem["DEPTH_LEVEL"] == 1):?>
                <li><?=$arItem["TEXT"]?></a>
                    <ul>
            <?else:?>
                <li<?if ($arItem["SELECTED"]):?> class="item-selected"<?endif?>><a href="<?=$arItem["LINK"]?>" class="parent"><?=$arItem["TEXT"]?></a>
                    <ul>
            <?endif?>
    
        <?else:?>
    
            <?if ($arItem["PERMISSION"] > "D"):?>
    
                <?if ($arItem["DEPTH_LEVEL"] == 1):?>
                    <li><a href="<?=$arItem["LINK"]?>" class="<?if ($arItem["SELECTED"]):?>root-item-selected<?else:?>root-item<?endif?>"><?=$arItem["TEXT"]?></a></li>
                <?else:?>
                    <li<?if ($arItem["SELECTED"]):?> class="item-selected"<?endif?>><a href="<?=$arItem["LINK"]?>"><?=$arItem["TEXT"]?></a></li>
                <?endif?>
    
            <?else:?>
    
                <?if ($arItem["DEPTH_LEVEL"] == 1):?>
                    <li><a href="" class="<?if ($arItem["SELECTED"]):?>root-item-selected<?else:?>root-item<?endif?>" title="<?=GetMessage("MENU_ITEM_ACCESS_DENIED")?>"><?=$arItem["TEXT"]?></a></li>
                <?else:?>
                    <li><a href="" class="denied" title="<?=GetMessage("MENU_ITEM_ACCESS_DENIED")?>"><?=$arItem["TEXT"]?></a></li>
                <?endif?>
    
            <?endif?>
    
        <?endif?>
    
        <?$previousLevel = $arItem["DEPTH_LEVEL"];?>
    
    <?endforeach?>
    
    <?if ($previousLevel > 1)://close last item tags?>
        <?=str_repeat("</ul></li>", ($previousLevel-1) );?>
    <?endif?>
    
    </ul>
    <div class="menu-clear-left"></div>
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    <?endif?>
    я надеюсь ты небудешь предлагать переменную оборачивать статичным id чтобы у всех переменных был один id....)
     
  6. Alexeina66

    Alexeina66

    Регистр.:
    26 авг 2013
    Сообщения:
    299
    Симпатии:
    278
    Так вы хотите сделать прям каждый пункт меню и подменю разный по стилю Например главная - цвет красный контакты цвет - белый...?? Или допустим меню белое выпадающее меню зеленым? Видите у Вас допустим class="item-selected" в css есть .item-selected?
     
  7. runyugin

    runyugin Постоялец

    Регистр.:
    30 июн 2013
    Сообщения:
    54
    Симпатии:
    4
    каждый пункт меню и подменю разный по стилю
     
  8. 0nolek0

    0nolek0 Прохожие

    Код:
    foreach($arResult as $arItem)
    Добавьте к данному циклу счётчик. При прохождении цикла изменяйте значение счётчика (например на 1)
    Перед началом цикла не забудьте счётчик объявить и обнулить.
    Выведите значение счётчика с помощью echo там где вам нужно. Например, в ссылке.


    P.S. Не понятно почему не задать разделам инфоблока (которые видимо и выводятся в качестве пунктов меню) какой-нибудь свойство, которое здесь и не вывести? Да сложнее, зато более гибко.
     
  9. johntrue

    johntrue Писатель

    Регистр.:
    23 апр 2014
    Сообщения:
    0
    Симпатии:
    3
    Поменять цикл и вывести в переменную $id номер пункта в массиве.
    foreach($arResult as $id as $arItem:(?>

    И во все строки с выводом пунктов добавить что-то типа этого:
    <li id="<?$id?>_item"><?=$arItem["TEXT"]?></a>

    Однако при изменении порядка пунктов меню изменятся соответствия стилей и пунктов меню.

    Чтобы решить эту задачу нужно
    немного поменять код компонента и
    добавить в массив $arResult id секции инфоблока.
    В строку <li id="<?$id?>_item"> надо выводить этот id/
     
  10. vava1

    vava1 Постоялец

    Регистр.:
    21 апр 2013
    Сообщения:
    50
    Симпатии:
    3
    я пока новичок с данной МСКой, но почему не использовать КСС по назначению?
    Код:
    ul > li {...}
    ul li li { ... }