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

Графическое горизонтальное многоуровневое меню

00 голосов
1
Уважаемые программисты!

Прошу помочь изменить шаблон Горизонтального Многоуровневого Меню (horizontal_multilevel) таким образом, чтобы заменить пункты верхнего уровня картинками, а пункты выпадающего меню оставить текстовыми.

Эскиз
Рисунок

В Руководстве по использованию компонентов Меню есть раздел Графическое меню, в котором описано как изменить шаблон default:

Цитата
Делается это в этом участке кода шаблона:
Код
<?if($arItem["SELECTED"]):?>
<li><a href="<?=$arItem["LINK"]?>"
class="selected"><?=$arItem["TEXT"]?></a></li>
<?else:?>
<li><a href="<?=$arItem["LINK"]?>"><?=$arItem["TEXT"]?></a></li>
29
<?endif?>

- Замените первую ссылку в коде на строку:
Код
<a href="<?=$arItem["LINK"]?>"><img border="0" src="<?=(array_key_exists("ACT",
$arItem["PARAMS"]) &&
file_exists($_SERVER["DOCUMENT_ROOT"].$arItem["PARAMS"]["ACT"]) ?
$arItem["PARAMS"]["ACT"] : "/images/menu/default.png")?>" /></a>

- Замените вторую ссылку в коде на строку:
Код
<a href="<?=$arItem["LINK"]?>"><img border="0"
src="<?=(array_key_exists("NOACT", $arItem["PARAMS"]) &&
file_exists($_SERVER["DOCUMENT_ROOT"].$arItem["PARAMS"]["NOACT"]) ?
$arItem["PARAMS"]["NOACT"] : "/images/menu/default.png")?>" /></a>

Шаблон Горизонтального многоуровневого меню (horizontal_multilevel) отличается от шаблона default. В нем нет такого участка кода.

Моих навыков программирования недостаточно (html и css владею) чтобы правильно изменить этот шаблон, поэтому прошу Вашей помощи. Готов поделиться Яндекс-деньгами или Вебмани.

Вот код шаблона, который нужно отредактировать.
Код
<?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><a href="<?=$arItem["LINK"]?>" class="<?if ($arItem["SELECTED"]):?>root-item-selected<?else:?>root-item<?endif?>"><?=$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>

С уважением, Денис
спросил 23 Апр, 14 от JIUNA (100 баллов)

1 Ответ

00 голосов
Принцип:
Ищем код, где определяется первый уровень меню (в коде два таких участка - для родительского (выпадающего) пункта меню и для не выпадающего)
Код
<?if ($arItem["DEPTH_LEVEL"] == 1):?> 


далее кусок кода внутри условного оператора будет действовать только для верхнего уровня меню, далее
Код
<li><a href="<?=$arItem["LINK"]?>" class="<?if ($arItem["SELECTED"]):?>root-item-selected<?else:?>root-item<?endif?>"><?=$arItem["TEXT"]?></a>
            <ul>
      <?else:?>
         <li<?if ($arItem["SELECTED"]):?> class="item-selected"<?endif?>><a href="<?=$arItem["LINK"]?>" class="parent"><?=$arItem["TEXT"]?></a>
            <ul> 

код внутри это шаблон отображения верхнего меню, вместо этого кода
Код
<?=$arItem["TEXT"]?>
вставляем графику (картинку)
Код
<img src="/images/image.jpg" />
какая вам нужна, единственно необходимо будет писать условие для этой самой картинки.

p.s.: представленная выше часть макета реализуется без графики.
ответил 07 Дек, 14 от Blodrayne (220 баллов)

Похожие вопросы

0 голосов
4 ответов
спросил 13 Янв, 14 от RainWalke (100 баллов)
0 голосов
1 ответ
0 голосов
0 ответов
спросил 06 Фев, 14 от ElektrA (100 баллов)
0 голосов
3 ответов
спросил 06 Июнь, 13 от SweetN (120 баллов)
0 голосов
3 ответов
спросил 10 Ноя, 13 от KAN155 (160 баллов)