• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела wpt лично.

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

runyugin

Постоялец
Регистрация
30 Июн 2013
Сообщения
55
Реакции
4
Меню битрикс, стандартное, как присвоить уникальные id пунктам меню, чтобы задать каждому пункту уникальный стиль, меню формируется на основании инфаблока.
 
нужно найти файл который отвечает за вывод пунктов меню..там соответственно..соориентируйте по разметке html там div'ы если да то то очень просто <div id="1"> .....</div>. В CSS .1 {background: #000; font: 12px; ну это к примеру }
 
нужно найти файл который отвечает за вывод пунктов меню..там соответственно..соориентируйте по разметке html там div'ы если да то то очень просто <div id="1"> .....</div>. В CSS .1 {background: #000; font: 12px; ну это к примеру }
спасибо за отписку для набора сообщений, только просьба по теме! Инфаблоки значит динамическое построение меню!
 
Ну и что что динамическое у меня тоже на сайте динамика...однако переменные обернуты в дивы с присвоенными id. Вы код то выложите что у вас там?
 
Код:
<?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....)
 
Так вы хотите сделать прям каждый пункт меню и подменю разный по стилю Например главная - цвет красный контакты цвет - белый...?? Или допустим меню белое выпадающее меню зеленым? Видите у Вас допустим class="item-selected" в css есть .item-selected?
 
каждый пункт меню и подменю разный по стилю
 
Код:
foreach($arResult as $arItem)
Добавьте к данному циклу счётчик. При прохождении цикла изменяйте значение счётчика (например на 1)
Перед началом цикла не забудьте счётчик объявить и обнулить.
Выведите значение счётчика с помощью echo там где вам нужно. Например, в ссылке.


P.S. Не понятно почему не задать разделам инфоблока (которые видимо и выводятся в качестве пунктов меню) какой-нибудь свойство, которое здесь и не вывести? Да сложнее, зато более гибко.
 
Поменять цикл и вывести в переменную $id номер пункта в массиве.
foreach($arResult as $id as $arItem:(?>

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

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

Чтобы решить эту задачу нужно
немного поменять код компонента и
добавить в массив $arResult id секции инфоблока.
В строку <li id="<?$id?>_item"> надо выводить этот id/
 
я пока новичок с данной МСКой, но почему не использовать КСС по назначению?
Код:
ul > li {...}
ul li li { ... }
 
Назад
Сверху