партнер компании 1с-битрикс
сайт фрилансера Сергея Эстрина
Войти как пользователь
Вы можете войти на сайт, если вы зарегистрированы на одном из этих сервисов:
Универсальная галерея - модуль для битрикс
Условия поставки: лицензия на использование в любом количестве проектов
Способ загрузки: загрузка в автоматическом режиме через личный кабинет
Розничная цена
300 руб.
Банковские карты
Электронные деньги
Терминалы
Счет

Дополняет меню ссылками для фильтрации элементов инфоблоков. Используется в файлах типа .тип_меню.menu_ext.php.

Обратите внимание, в данный момент компонент работает только с обычным компонентом фильтра (catalog.filter) и не работает с умным фильтром (catalog.smart.filter).

Иногда удобно сделать ссылки прямо из меню, которые будут вести напрямую на страницу списка элементов с фильтрацией по каком-либо свойству. Данный компонент позволяет сформировать такие ссылки при помощи стандартного механизма menu_ext. Компонент работает со свойствами типа "Список" и "Привязка к элементам" (а также "Привязка к элементам в виде списка", "Привязка к элементам с автозаполнением").

Пример подключения (при размещении в компонента в папке /bitrix/components/grain/):

Файл .left.menu_ext.php:

<?

if(!
defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();

global 
$APPLICATION;

$aMenuLinksExt1 $APPLICATION->IncludeComponent(
    
"grain:menu.filter",
    
"",
    Array(
        
"IBLOCK_TYPE" => "recipe"// Тип информационного блока
        
"IBLOCK_ID" => "11"// ID информационного блока
        
"IBLOCK_CODE" => ""// Или символьный код информацмонного блока
        
"SECTION_PAGE_URL" => "/catalog/?SECTION_ID=5"// URL страницы со списком элементов
        
"PROPERTY_CODE" => array("REC_CUISINE""REC_TYPE""REC_CHAR"), // Символьные коды 
        // свойств, по которым будет осуществляться фильтрация
        
"FILTER_NAME" => "arrFilter"// Имя переменной фильтра
        
"INCLUDE_REQUEST_VARS" => array("lang"), // Массив параметров из исходного адреса, 
        // которые должны быть включены в адрес ссылок для фильтрации
        
"ADD_LEVEL" => "0"// Добавочное значение DEPTH_LEVEL (например, если нужно включить
        // инфоблок в структуру)
        
"CACHE_TYPE" => "A"// Тип кеширования
        
"CACHE_TIME" => "36000000" // Время кеширования в секундах
    
)
);

$aMenuLinks array_merge($aMenuLinks$aMenuLinksExt1);

Перед компонентом фильтра нужно разместить код:

<?

parse_str(str_replace(Array("_QLF_","_QRT_"),Array("[","]"),$_SERVER["QUERY_STRING"]),$vars);
foreach(
$vars as $k=>$v) {
    
$_REQUEST[$k]=$v;
    
$_GET[$k]=$v;
}
Данный код необходим для выделения текущих пунктов меню. Т.к. стандартный компонент меню в битрикс не распознает массивы в строке адреса, все квадратные скобки в адресах заменяются компонентом на "_QLF_" и "_QRT_". Поэтому перед передачей компоненту фильтра, необходимо обратное преобразование и обработка адреса при помощи parse_str, чтобы в массивах $_GET и $_REQUEST уже оказались необходимые массивы.

Примечание: данный компонент не заменяет компонент фильтра, т.к. компонент фильтра инициализирует переменные. Если компонент фильтра не нужен на странице, подключайте его с пустым шаблоном.



Назад в раздел