Матвей Земсков

Заметки веб-мастера

Четверг, 27 марта 2014 12:01

Используем массив-фильтр внутри шаблона комплексного компонента

Оцените материал
(4 голосов)

Иногда требуется использовать фильтрацию элементов по каким-либо свойствам внутри комплексного компонента (например, bitrix:news). Предположим, что нужно при загрузке страницы показывать элементы инфоблока, привязанные к идентификатору города, который хранится в массиве $_SESSION. Причем это нужно дедать не используя компонент bitrix:catalog.filter, который встроен в комплексный компонент bitrix:news. Казалось бы, что ничего сложного нет, создаем массив и передаем его в качестве фильтра ($arParams["FILTER_NAME"]) в вызов bitrix:news.list.

PHP

/*файл news.php комплексного компонента*/

$arPropFilter = Array(
	"PROPERTY_CITYPROP" => $_SESSION["CITY_ID"],
);

$APPLICATION->IncludeComponent(
        "bitrix:news.list",
        "",
        Array(
		…
		"FILTER_NAME" => "arPropFilter",
		…		
		),
        $component
    );

Приведенный выше код в комплексном компоненте корректно работать не будет!

Чтобы все работало правильно, нужно поместить массив с условиями фильтрации в глобальную область видимости (массив $GLOBALS). В итоге корректный код будет выглядеть следующим образом.

PHP

/*файл news.php комплексного компонента*/

$GLOBALS["arPropFilter"] = Array(
	"PROPERTY_CITYPROP" => $_SESSION["CITY_ID"],
);

$APPLICATION->IncludeComponent(
        "bitrix:news.list",
        "",
        Array(
		…
		"FILTER_NAME" => "arPropFilter",
		…		
		),
        $component
    );

Однако, хочу обратить ваше внимание: если вызвать простой компонент bitrix:news.list на странице сайта с фильтром, то даже без размещения его в $GLOBALS все будет работать без проблем.

Прочитано 17328 раз
Мои услуги

Предлагаю следующие услуги:

  • Верстка шаблона сайта из дизайн-макета для CMS «1С-Битрикс Управление сайтом» и CMS “Joomla”
  • Создание форм различной сложности (обратная связь, анкеты и тп) для указанных CMS
  • Настройка и кастомизация компонентов и модулей для указанных CMS
  • Доработка модулей и компонентов для указанных CMS, добавление нестандартного функционала
  • Разработка лендингов (landing-pages)

По все вопросам обращайтесь через форму обратной связи

Скачать

Предлагаю вашему вниманию:

Наверх