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

Left Menu

00 голосов
7
У меня следующая проблема, не как не могу разобраться с левым меню.
Ситуация такая
Что нужно:
Левое меню которая не зависит от верхнего, но зависит сама от себя, допустим:

-Телевизоры
-Магнитофоны
-DVD
-Бытовая техника

При нажатии на ссылку «Телевизоры», получается:

-Телевизоры
--ЖК
--LCD
--TFT
-Магнитофоны
-DVD
-Бытовая техника

Т.е. к на сайте: http://www.eds-soft.com/ - сколько лазил по сайту, форому и FAQ вразумительного ответа или примера на данную ситуацию не видел, хотя и были похожие ситуации но так и нечего не понял.

Значит то что я знаю (наверное павильно):
Подкатегории лежат в .left.menu.php в папке куда ссылается сама категория.
Отдельно подключил левое меню (только не иерархического вида) таким образом:
В папке с шаблоном в файле left.menu_template.php делаю:

<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?><?
$sMenu = '';

for($i=0; $i<count($MENU_ITEMS); $i++)
{
$MENU_ITEM = $MENU_ITEMS[$i];
extract($MENU_ITEM);
$clrtext = 'leftmenu';

$sMenu .= ''.$TEXT.'   ';
}
?>

Подключаю его в главном шаблоне с помощью:
[td]<?echo $APPLICATION->GetMenuHtmlEx("left", true);?>[/td]

В админ панели в меню left ввожу:
-Телевизоры + (ссылка в деректорию где лежит файл .left.menu.php и др. )
-Магнитофоны
-DVD
-Бытовая техника

В итоге получается одноуровневое меню.
Вопрос есть что-нибудь у кого-нибудь подобное, хоть на пример взглянуть ?
спросил 01 Сен, 13 от DARK (220 баллов)

7 Ответы

00 голосов
Да и ещё хочу уточнить, левое меню не должно не как не зависеть от верхнего! Вообщем абсолютно точно также как и на сайте http://www.eds-soft.com/
ответил 01 Сен, 13 от DARK (220 баллов)
00 голосов
А вот эта тема не поможет разобраться как делать многоуровневые меню?
http://www.1c-bitrix.ru/support/forum/forum6/topic9825/message66270/#message66270
ответил 21 Ноя, 13 от sickmind (4,660 баллов)
00 голосов
Нет не поможет там добиваются совершенно другой тип меню. Как тут http://www.mitsubishi-motors.ru/ru/auto_service/tech_serv/ При том что реализация меню мне не ясна, во вторых 3х уровневое меню а мне нужно двух и в третих подуровни меню первоночально видны в отдельном столбце.
ответил 02 Март, 14 от DARK (220 баллов)
00 голосов
ну что мне так не кто и не поможет?
ответил 22 Июнь, 14 от DARK (220 баллов)
00 голосов
Вот что я сделалл в left.menu_template.php:

Код
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?><? 

// Глобальная переменная вложенности рекурсии 
global $MENU_LEVEL; 
$MENU_LEVEL = IntVal($MENU_LEVEL); 
$leftBreak = '+'; 

// Устанавливаем отметку для директории 
if ($ITEM_TYPE=="D" || $MENU_LEVEL==1) 
$strBullet = '+'; 
else 
$strBullet = '+'; 

// Если это первый уровень 
if($MENU_LEVEL==0) 
{ 

// Пропускаем все пункты кроме выделенного 
$sMenuProlog = ""; 
$sMenuEpilog = ""; 
$sMenuBody = ""; 
if($SELECTED) 
{ 
$CurMenu = new CMenu("left"); 
$CurMenu->Init($LINK); 
global $arUSED_MENU; 
if(!is_array($arUSED_MENU)) 
$arUSED_MENU=Array(); 
if(!in_array($CurMenu->MenuDir, $arUSED_MENU)) 
{ 
$arUSED_MENU[] = $CurMenu->MenuDir; 
$MENU_LEVEL++; 

// Для выделенного пункта первого уровня запросим внутреннее меню 
$sMenuBody .= $CurMenu->GetMenuHtml(); 
$MENU_LEVEL--; 
} 
} 
} 
else 
{ 

// Меню ниже первого уровня 
$sMenuProlog=''; 
$sMenuEpilog=''; 
if($MENU_LEVEL==1 && ($ITEM_INDEX > 0)) $sMenuBody = $leftBreak; 
if($MENU_LEVEL>1) $sMenuProlog = ''; 

// Для выделенного пункта рекурсивно построим нижележащие меню 
if($SELECTED) 
{ 
$strU_beg = ""; 
$strU_end = ""; 
$strSubMenu = ""; 
$CurMenu = new CMenu("left"); 
$CurMenu->Init($LINK); 
global $arUSED_MENU; 
if(!is_array($arUSED_MENU)) 
$arUSED_MENU=Array(); 
if(!in_array($CurMenu->MenuDir, $arUSED_MENU)) 
{ 
$arUSED_MENU[] = $CurMenu->MenuDir; 
$MENU_LEVEL++; 
$strSubMenu = $CurMenu->GetMenuHtml(); 
$MENU_LEVEL--; 
} 

// Если внутри есть меню - выведем его 
if(strlen($strSubMenu)>0) 
if($PERMISSION > "D") 
{ 
$sMenuBody .= '<a href="'.$LINK.'" class="'.$clrtext.'">'.$strU_beg.$TEXT.$strU_end.'</a>'.$strSubMenu.'<br>';

} 
else 
{ 
$sMenuBody = ""; 
} 
else 

// Если внутри нет меню, значит пункт последний - выводим без ссылки 
if($PERMISSION > "D") 
{ 
$sMenuBody .= '<a href="'.$LINK.'" class="'.$clrtext.'">'.$strU_beg.$TEXT.$strU_end.'</a><br>';

} 
else 
{ 
$sMenuBody = ""; 
} 
} 
else { 

// Для невыделенных пунктов просто выводим 
if($PERMISSION > "D") 
{ 
$sMenuBody .= '<a href="'.$LINK.'" class="'.$clrtext.'">'.$TEXT.'</a><br>'; 
} 
else 
{ 
$sMenuBody = ""; 
} 
} 
} 
?>


Но при клике на ссылку в меню, перехожу на следующую страницу а меню полностью проподает, т.е. меню работает тока на главной странице! Пожайлуста подскажите что не так?
ответил 21 Окт, 14 от DARK (220 баллов)
00 голосов
вариант 1-й. в верхнем меню ставишь уровень вывода пунктов меню 1.
для всех остальных тоже выставляешь шаблон для вывода верхнее меню.
НЕ left!!
затем в структуре (уже в админке) открываешь нужную папку в ней необходимо создать Left Menu. Тогда ее пунткы унаследуются и будут видны по всему дереву этой папки
ответил 20 Фев, 15 от Grimmi (2,560 баллов)
00 голосов
вариант 2.
лезешь в Настройки-Настройки продукта- настройки модулей- Управление структурой
создаешь еще один тип меню например rigth
затем на странице сайта размещаешь меню, в типе выбираешь его, и заполняешь нужными тебе пунктами. вот оно, пока ты не полезешь перенастраивать верхнее и определять в нем в каком из подменю выводить пунткты, НЕ будет никак зависить от верхнего меню.
ответил 30 Май, 15 от Grimmi (2,560 баллов)

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

0 голосов
5 ответов
0 голосов
3 ответов
спросил 14 Авг, 13 от PhoenX (290 баллов)
0 голосов
4 ответов
спросил 09 Янв, 14 от Nor (100 баллов)
0 голосов
7 ответов
спросил 18 Июнь, 13 от Limur (240 баллов)
0 голосов
3 ответов