Вызов bitrix:news.list: параметры, фильтр и кеш
Практический пример вывода элементов инфоблока через стандартный компонент bitrix:news.list с фильтром, ЧПУ-ссылками и кешированием.
Системные требования
Нужны тестовая копия проекта, доступ разработчика или администратора и резервная копия перед изменением рабочего кода.
Смотреть системные требования1. Подготовьте инфоблок и шаблон
Узнайте ID или символьный код инфоблока, набор нужных свойств и URL детальной страницы. Создайте отдельный шаблон компонента в /local/templates/site/components/bitrix/news.list/cards/.
Для SEO у списка должны быть собственные заголовок, вводный текст и ссылки на индексируемые детальные страницы.
2. Сформируйте фильтр до вызова
Глобальный фильтр объявляется до вызова компонента и передаётся в FILTER_NAME:
$GLOBALS["catalogFilter"] = [
"=ACTIVE" => "Y",
"PROPERTY_FEATURED_VALUE" => "Y",
];Имя фильтра должно быть уникальным на странице. Не подставляйте значения запроса без валидации.
Совет
Не выводите все свойства и элементы «на всякий случай». Ограничьте выборку, количество строк и используйте кеш — это заметно влияет на скорость каталога и списков.
3. Вызовите news.list
Минимальный вызов:
$APPLICATION->IncludeComponent(
"bitrix:news.list", "cards",
[
"IBLOCK_ID" => 7,
"NEWS_COUNT" => 12,
"FILTER_NAME" => "catalogFilter",
"FIELD_CODE" => ["ID","NAME","PREVIEW_PICTURE"],
"PROPERTY_CODE" => ["PRICE"],
]
);4. Настройте ссылки и кеш
Задайте DETAIL_URL в соответствии со структурой раздела. Для кеша используйте CACHE_TYPE=A, разумный CACHE_TIME и CACHE_FILTER=Y, если фильтр влияет на результат.
Стабильная сортировка должна включать уникальное поле, например ID после даты или SORT.
5. Проверьте права и результат
Включите CHECK_DATES и проверку прав, если список зависит от доступа пользователя. Проверьте пустой результат, пагинацию, изображения без файла и значения свойств.
В HTML должен быть один H1 страницы; названия элементов выводите ссылками подходящего уровня, не превращая каждую карточку в отдельный H1.
Была ли эта статья полезной?
Спасибо за ваш отзыв!