Дата последнего изменения: 09.11.2023
Если для публикации информационного блока используются простые компоненты, то можно сделать фильтрацию элементов без использования компонента Фильтр и без кастомизации компонента, с помощью которого выводится список элементов. Такая фильтрация основана на использовании параметра Имя массива со значениями фильтра для фильтрации (FILTER_NAME) и доступна в следующих компонентах: bitrix:catalog.section, bitrix:catalog.sections.top и bitrix:news.list.
Массив фильтра можно определить прямо на странице, где подключается компонент, перед его подключением. Однако, в таком случае, придется создавать несколько страниц, на каждой помещать компонент и т.д. Можно сделать гораздо проще - передавать переменные массива фильтра в ссылке.
В нашем примере будет происходить переход с другой страницы, переменные для фильтрации можно передать в ссылке методом GET, а на странице определять фильтр $arrFilter из массива $_GET. Публикацию элементов инфоблока будем выполнять с помощью компонента Элементы раздела (bitrix:catalog.section).
Допустим, что у нас имеется инфоблок Книги, фильтровать элементы которого мы будем по свойству Год выпуска (YEAR):

Создадим стартовую страницу с набором ссылок (в нашем случае со списком годов выпуска книг):

Код страницы будет следующим:
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Поиск книги по году выпуска");
?>
<p>Выберите год:</p>
<ul>
<li><a href="/content/filter/section.php?SECTION_ID=10&YEAR=2000">2000</a></li>
<li><a href="/content/filter/section.php?SECTION_ID=10&YEAR=2001">2001</a></li>
<li><a href="/content/filter/section.php?SECTION_ID=10&YEAR=2002">2002</a></li>
<li><a href="/content/filter/section.php?SECTION_ID=10&YEAR=2003">2003</a></li>
<li><a href="/content/filter/section.php?SECTION_ID=10&YEAR=2004">2004</a></li>
<li><a href="/content/filter/section.php?SECTION_ID=10&YEAR=2005">2005</a></li>
</ul>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
Теперь создаем страницу section.php и размещаем на ней компонент (bitrix:catalog.section), в настройках которого задаем необходимый инфоблок, а также заполняем поле Имя массива со значениями фильтра для фильтрации элементов значением arrFilter.
Перед подключением компонента добавляем следующий код:
$year = intval($_GET["YEAR"]);
if ($year >= 1970 && $year <= 2015)
{
$arrFilter=array("PROPERTY"=>array("YEAR"=>"$year"));
}
В результате при переходе со стартовой страницы (например, по ссылке 2002) откроется список книг раздела с идентификатором 10, у которых выбранный год выпуска:
