Регистрация
Вход через соцсети
Восстановление пароля

Условие в выводе меню

Новый топик
28.01.2014, 18:02
Ответить | Цитировать
Arturito
Феерично
Arturito

Зарегистрирован:
2009-02-16
Сообщений: 11

Есть раздел со статьями, называется Блог. В нем есть подразделы: 1) Все разделы, 2) Первый раздел, 3) Второй раздел и т.п.
Внешняя ссылка с подраздела "Все разделы" ведет на главную страницу блога. Этот пункт нужен для отображения всех статей, когда находишься уже внутри блога.

Т.е. структура такая:

- Главная
- О нас
- Блог
--- Все разделы
--- Первый
--- Второй
...

В верхнем меню сайта, при наведении на раздел Блог выпадает меню второго уровня, где отображаются подразделы. Но нам не нужно выводить в выпадающем подменю раздел "Все разделы".

Как в шаблоне вывода меню сделать такое условие? Т.е. надо сравнить %NAME с названием "Все разделы" или сравнить текущий номер раздела с 392. Если текущая запись - "Все разделы", то ничего не выводим, если другие, то выводим пункт подменю.

$main_menu[1]['prefix'] = "<ul class=\"sub-menu\">";
$main_menu[1]['suffix'] = "</ul>";
$main_menu[1]['active'] = "<li><a href=\"%URL\">%NAME</a></li>";
$main_menu[1]['unactive'] = "".($data[$i][Subdivision_ID]==392 ? "" : "<li><a href=\"%URL\">%NAME</a></li>")."";
$main_menu[1]['active_link'] = "<li><a href=\"%URL\">%NAME</a></li>";
$main_menu[1]['divider'] = "";

www.feerichno.ru
28.01.2014, 20:16
Ответить | Цитировать
Nexwich
Панасин Александр
Nexwich

Зарегистрирован:
2011-04-05
Сообщений: 943

css
Вариант 1
.nav ul li ul li:first-child {display:none;}

Вариант 2
Подставить id в data-
$main_menu[1]['unactive'] = "<li data-sub='%SUB'><a href=\"%URL\">%NAME</a></li>";
.nav ul li ul li[data-sub='392'] {display:none;}

api
Вариант 1
Создать дополнительное поле в разделе "display" тип логическая переменная
<?=nc_cond_browse_sub(0, $main_menu, $where_cond = "display='1'")?>

Вариант 2
<?=nc_cond_browse_sub(0, $main_menu, $where_cond = "Subdivision_Name!='Все разделы'")?>

Модуль "Почтовые уведомления" – настройка уведомлений на вашем сайте без программирования. Цена отзыв. Мне очень важно ваше мнение.
29.01.2014, 00:15
Ответить | Цитировать
Arturito
Феерично
Arturito

Зарегистрирован:
2009-02-16
Сообщений: 11

Спасибо тебе, добрый человек)

В первом варианте без добавления id в data есть недостаток - если у других разделов будут вторые уровни, то первый li тоже не будет высвечиваться.

Через api сделал, только вот так:
<?=nc_browse_sub(0, $main_menu, $ignore_check = 0, $where_cond = "Subdivision_Name!='Все'")?>

C nc_cond работать не хочет.

www.feerichno.ru
15.04.2015, 20:19
Ответить | Цитировать
Muerto
Алексей Виноградов-фон Шлиппе

Зарегистрирован:
2006-09-14
Сообщений: 37

Думал разнести в три меню разделы первого уровня.
Создал поле типа "множественный выбор" в системной таблице "Разделы". В администрировании раздела вылезли чекбоксы, всё нормально. Но, при сохранении изменений проставленные чекбоксы слетают. Но ещё более интересно, что сделав SELECT * FROM Subdivision where Checked=1 AND Catalogue_ID=1 я не нашел созданного мною поля в таблице. Откуда же оно берется при редактировании радела?! %)
Что я делаю не так?

Nadie hablara de nosotras cuando hayamos muerto...
04.05.2015, 20:29
Ответить | Цитировать
Руслан Густокашин
Студия Вэлпис
Руслан Густокашин

Зарегистрирован:
2012-02-06
Сообщений: 869

Все делаете правильно. Мне кажется, вы что-то невнимательно посмотрели - не может быть такого, что в доп.полях раздела есть разделы, в а Subdivision их нет.
Но и поддержка "множественного выбора" в системной таблице "Разделы" мне кажется сомнительной. То есть я не исключаю, что есть такая возможность, но думаю, что такая штука просто не проработана разработчиками CMS.
Самым правильным решением в вашем случае будет обратиться в техподдержку, сообщить о возможном баге - заодно помогут разобраться с вашим вопросом.
Если техподдержка не оплачена, тогда рекомендую вместо "множественный выбор" поставить тип поля "Список". Оно точно нормально работает.

198 196 2015-05-04 20:29:18 13483
Описание проекта