Налаштування новостного розділу на 1С-Bitrix
Новостний розділ — один з перших, що налаштовують на свіжому Bitrix, і один з найчастіше зломаних. Типові проблеми: дублювання 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. Це генерує транслітерацію з назви новості при збереженні. Без цього редактори залишають поле пустим, і Bitrix падає в помилку 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() або через адміністративний інтерфейс Bitrix автоматично скидає кеш компонента. Якщо цього не відбувається — перевіртье, що BXClearCache не відключений глобально у настройках кеширування.
У template.php списку стандартний набір виводу: $arItem["NAME"], $arItem["PREVIEW_TEXT"], $arItem["PREVIEW_PICTURE"], $arItem["DISPLAY_ACTIVE_FROM"]. Для зображень Bitrix зберігає оригінал у /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 — компонент 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 не підходить, пишіть свій.







