Настройка новостного раздела на 1С-Битрикс
Новостной раздел — один из первых, что настраивают на свежем Битриксе, и один из самых часто сломанных. Типичные проблемы: дублирование URL, кеш не сбрасывается при публикации, изображения не отображаются в нужном размере. Разберём настройку от инфоблока до постраничной навигации.
Инфоблок новостей: обязательные настройки
Создаёте инфоблок с типом news, символьный код news. Ключевые параметры при создании:
-
BIZPROC = N— бизнес-процессы для новостей избыточны, включение замедляет запись -
VERSION = 2— хранение свойств в отдельных таблицах (b_iblock_element_prop_s{id}), быстрее для больших объёмов -
INDEX_ELEMENT = Y,INDEX_SECTION = Y— для поиска -
DETAIL_PAGE_URL = /news/#ELEMENT_CODE#/— URL детальной страницы через символьный код, не ID
Символьный код (CODE в b_iblock_element) заполняйте автоматически: в настройках инфоблока включите TRANSLIT_AUTOFIELD_NAME = Y. Это генерирует транслит из названия новости при сохранении. Без этого редакторы оставляют поле пустым, и Битрикс падает в ошибку 404 на детальных страницах.
Свойства инфоблока для новостей:
-
SOURCE— источник, типСтрока -
AUTHOR— автор, типПривязка к пользователюили простоСтрока -
TAGS— теги, множественнаяСтрока(или встроенное полеTAGS)
Компоненты: list и detail
Пара bitrix:news.list + bitrix:news.detail — стандарт. Размещаете их через составной компонент bitrix:news или отдельно.
Параметры bitrix:news.list, на которые обратить внимание:
IBLOCK_TYPE = news
IBLOCK_ID = <id вашего инфоблока>
SORT_BY1 = ACTIVE_FROM
SORT_ORDER1 = DESC
CACHE_TYPE = A
CACHE_TIME = 3600
DISPLAY_DATE = Y
PAGER_SHOW = Y
PAGER_TEMPLATE = .default
Кеш CACHE_TIME = 3600 с автоматической инвалидацией (CACHE_TYPE = A) — оптимально. При публикации новости через CIBlockElement::Add() или через административный интерфейс Битрикс автоматически сбрасывает кеш компонента. Если этого не происходит — проверьте, что BXClearCache не отключён глобально в настройках кеширования.
В template.php списка стандартный набор вывода: $arItem["NAME"], $arItem["PREVIEW_TEXT"], $arItem["PREVIEW_PICTURE"], $arItem["DISPLAY_ACTIVE_FROM"]. Для изображений Битрикс хранит оригинал в /upload/, а ресайзы генерирует через CFile::ResizeImageGet() с записью в /upload/resize_cache/.
Постраничная навигация и ЧПУ
Пагинация в bitrix:news.list работает через GET-параметр PAGEN_1 (или кастомное имя). Проблема: при индексации Google видит /news/?PAGEN_1=2 как дублирующийся URL. Решение: используйте шаблон пагинации с <link rel="next"> и <link rel="prev"> в <head> — добавляйте их в component_epilog.php.
Для ЧПУ-пагинации вида /news/page/2/ нужна кастомизация: компонент не поддерживает это из коробки, реализуется через urlRewrite.php или через переопределение шаблона навигации.
RSS-лента
Новостной раздел часто требует RSS. Модуль rss в Битриксе — компонент bitrix:rss.export. Настраивается аналогично bitrix:news.list, генерирует валидный RSS 2.0 или Atom. Подключается на отдельной странице /news/rss.php с типом контента application/xml.
При активном кешировании RSS обновляется с задержкой — устанавливайте CACHE_TIME для RSS-страницы не более 900 секунд или сбрасывайте кеш при публикации через обработчик события OnAfterIBlockElementAdd.
Автопубликация и отложенные новости
Поля ACTIVE_FROM и ACTIVE_TO в b_iblock_element управляют временем публикации. Элемент с ACTIVE_FROM в будущем не отображается в компонентах при стандартной фильтрации. Для автопубликации в точное время нужен агент (таблица b_agent), который регулярно сбрасывает кеш или проверяет публикацию — стандартный агент CIBlockAgent::CheckDiskQuota не подходит, пишете свой.







