nc_browse_sub( $sub, $template, $ignore_check = 0, $where_cond = "", $level = 0 )
Появилось в версии: 5
вывод списка подразделов заданного раздела в соответствии с шаблоном $template
Параметр | Описание |
---|---|
$sub | идентификатор родительсвого раздела. Если нужно вывести корневые разделы, нужно указать 0 |
$template | массив шаблона |
$ignore_check | игнорирование вывода только включённых разделов, если $ignore_check равен 1, то выведутся все разделы |
$where_cond | определяет дополнительные условия выборки из таблицы Subdivision |
$level | уровень вывода меню |
Массив $template должен иметь элементы со следующими индексами:
Индексы | Описание |
---|---|
prefix | выводится перед списком |
suffix | выводится после списка |
active | шаблон вывода активного элемента списка (а данном случае это касается текущего сайта) |
active_link | шаблон вывода активного элемента списка в том случае, если ссылка на этот элемент идентична адресу текущей страницы |
unactive | шаблон вывода неактивного элемента списка (в данном случае это касается всех сайтов, кроме текущего) |
divider | шаблон разделителя между элементами списка |
sortby | признак сортировки элементов |
В шаблонах навигации доступны следующие макропеременные:
В макете страницы необходимо вывести список всех подразделов раздела "Каталог продукции" (номер раздела - 123) в виде ненумерованного списка. Текущий раздел ссылкой выделяться не должен.
Фрагмент хедера или футера макета:
<?= nc_browse_sub(123, $cat_template); ?>
Фрагмент шаблона вывода навигации макета:
$cat_template['prefix'] = "<ul>"; $cat_template['suffix'] = "</ul>"; $cat_template['active'] = "<li>%NAME</li>"; $cat_template['active_link'] = "<li>%NAME</li>"; $cat_template['unactive'] = "<li><a href='%URL'>%NAME</a></li>"; $cat_template['divider'] = ""; $cat_template['sortby'] = "Priority DESC";
Вывести двухуровневое и более меню так же несложно. Для этого нужно сформировать массив шаблона следующим образом:
$cat_template[0]['prefix'] = "<ul>"; $cat_template[0]['suffix'] = "</ul>"; $cat_template[0]['active'] = "<li>%NAME %NEXT_LEVEL</li>"; $cat_template[0]['active_link'] = "<li>%NAME %NEXT_LEVEL</li>"; $cat_template[0]['unactive'] = "<li><a href='%URL'>%NAME</a> %NEXT_LEVEL</li>"; $cat_template[0]['divider'] = ""; $cat_template[0]['sortby'] = "Priority DESC"; $cat_template[1]['prefix'] = "<ul>"; $cat_template[1]['suffix'] = "</ul>"; $cat_template[1]['active'] = "<li>%NAME</li>"; $cat_template[1]['active_link'] = "<li>%NAME</li>"; $cat_template[1]['unactive'] = "<li><a href='%URL'>%NAME</a></li>"; $cat_template[1]['divider'] = "";
С помощью условия $where_cond можно ограничить условия вывода. Например есть задача: выводить только определённые разделы в пунктах меню. Для решения можно добавить чекбокс в настройке раздела: если включен — отображаем, иначе нет. Перейдите в: Разработка → Системные таблицы → Разделы и добавьте новое поле:
Сохраните.
Теперь в настройках каждого из разделов вы можете видеть соответствующий чекбокс. В условии вывода меню нужно добавить условие:
<?= nc_browse_sub(123, $cat_template, 0, $where_cond = "show_in_menu='1'"); ?>
Комментарии 13
[CODE]
$cat_template[0]['prefix'] = "<ul>";
$cat_template[0]['suffix'] = "</ul>";
$cat_template[0]['active'] = "<li>%NAME %NEXT_LEVEL</li>";
$cat_template[0]['active_link'] = "<li>%NAME %NEXT_LEVEL</li>";
$cat_template[0]['unactive'] = "<li><a href='%URL'>%NAME</a> %NEXT_LEVEL</li>";
$cat_template[0]['divider'] = "";
$cat_template[0]['sortby'] = "Priority DESC";
$cat_template[1]['prefix'] = "<ul>";
$cat_template[1]['suffix'] = "</ul>";
$cat_template[1]['active'] = "<li>%NAME</li>";
$cat_template[1]['active_link'] = "<li>%NAME</li>";
$cat_template[1]['unactive'] = "<li><a href='%URL'>%NAME</a></li>";
$cat_template[1]['divider'] = "";
[/CODE]
для вывода использовать [B]s_browse_[/B]
Подскажите. За некоторыми изменениями, к меня:
[CODE]$topmenu[0]['prefix'] = "";
$topmenu[0]['active'] = "<li class='first current '><a href='%URL'>%NAME %NEXT_LEVEL</a></li>";
$topmenu[0]['unactive'] = "<li class='even '><a href='%URL'>%NAME %NEXT_LEVEL</a></li>";
$topmenu[0]['suffix'] = "";
$topmenu[1]['prefix'] = "<ul class='level-1'>";
$topmenu[1]['active'] = "<li class='first current '><a href='%URL'>%NAME</a></li>";
$topmenu[1]['unactive'] = "<li class='first '><a href='%URL'>%NAME</a></li>";
$topmenu[1]['suffix'] = "</ul>";[/CODE]
В Header вывожу так: [CODE]<?=nc_browse_sub(0,$topmenu) ?>[/CODE]
Верхний уровень меню все хорошо отображается, а вот последующие... Начинаются проблемы, а именно, в подменю каждого уровня, теред первым <li> добавляется ссылка на головной пункт меню:
[IMG='http://puu.sh/9UXUY/ef16f8b791.png']
Где я допустил ошибку, не могу разобраться.
вот код:
[CODE]$topmenu[0]['active'] = "<li class='first current '><a href='%URL'>%NAME %NEXT_LEVEL</a></li>";
$topmenu[0]['unactive'] = "<li class='even '><a href='%URL'>%NAME %NEXT_LEVEL</a></li>";[/CODE]
Ошибка в месте написания глобальной переменной %NEXT_LEVEL
Необходимо вынести ее за пределы <a href="">.....</a>
Выглядеть должно:
[CODE]$topmenu[0]['active'] = "<li class='first current '><a href='%URL'>%NAME</a>%NEXT_LEVEL</li>";
$topmenu[0]['unactive'] = "<li class='even '><a href='%URL'>%NAME</a>%NEXT_LEVEL</li>";[/CODE]
<ul id="mega-menu-1" class="mega-menu">
<li><a href="#">О компании</a></li>
<li><a href="#">Услуги</a>
<ul>
<li><a href="#">Mobile Phones & Accessories</a>
<ul>
<li><a href="#" class="link">Product 1</a></li>
<li><a href="#" class="link" >Product 2</a></li>
<li><a href="#" class="link">Product 3</a></li>
</ul>
</li>
<li><a href="#">Desktop</a>
<ul>
<li><a href="#" class="link">Product 4</a></li>
<li><a href="#" class="link">Product 5</a></li>
<li><a href="#" class="link">Product 6</a></li>
<li><a href="#" class="link">Product 7</a></li>
<li><a href="#" class="link">Product 8</a></li>
<li><a href="#" class="link">Product 9</a></li>
</ul>
</li>
<li><a href="#">Laptop</a>
<ul>
<li><a href="#" class="link">Product 10</a></li>
<li><a href="#" class="link">Product 11</a></li>
<li><a href="#" class="link">Product 12</a></li>
<li><a href="#" class="link">Product 13</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#">Объекты</a></li>
<li><a href="#">Важно знать</a></li>
<li><a href="#">Задать вопрос</a></li>
<li><a href="#">Гарантии</a></li>
<li><a href="#">Контакты</a></li>
</ul>
$cat_template[0]['prefix'] = "";
$cat_template[0]['suffix'] = "";
$cat_template[0]['active'] = "<li><a style='color:#ff9b00' >%NAME </a>" ;
$cat_template[0]['active_link'] = "";
$cat_template[0]['unactive'] = " <li><a href='%URL'>%NAME </a>%NEXT_LEVEL ";
$cat_template[1]['prefix'] = "";
$cat_template[1]['suffix'] = "";
$cat_template[1]['active'] = "";
$cat_template[1]['active_link'] = "";
$cat_template[1]['unactive'] = "<ul><li><a href='%URL'>%NAME </a> %NEXT_LEVEL ";
$cat_template[2]['prefix'] = "";
$cat_template[2]['suffix'] = "";
$cat_template[2]['active'] = "";
$cat_template[2]['active_link'] = "";
$cat_template[2]['unactive'] = "<ul><li><a class='link' href='%URL'>%NAME</a></li></ul></ul> ";
в макете дизайна вставлено это
<ul id='mega-menu-1' class='mega-menu'>
<?= nc_browse_sub(4, $cat_template); ?>
</ul>
Пример можете посмотреть на моём новом проекте www.stroyexpro.ru
- подсчитать сколько объектов в текущем разделе
- вывести переменную $i которая была доступна в s_browse_sub
и вообще, каким образом делать там вставку php?
Добавили в описание все возможные переменные.
Методом тыка получилось сделать вывод только элементов у которых стоит в админке чекбокс (поле в системной таблице разделов). Для этого в виде строки было просто указано имя этого поля.