Вывод раздела по ID в компоненте "Новости"

Alexander K.
1С-Bitrix
18.09.2017
304
В настройках компонента "Список новостей" присутствуют два очень удобных пункта для фильтрации элементов - по ID и по коду раздела. Однако в комплексном компоненте "Новости" данная возможность из коробки не реализована. Чтобы это исправить, нам понадобится 10 минут времени и немного усилий. Начнём.

Шаг 1

Для начала создадим новый шаблон комплексного компонента "Новости". В режиме правки на странице находим интересующий нас компонент, в выпадающем меню его настроек выбираем пункт "Новости (bitrix:news)" -> "Копировать шаблон компонента". Необходимо ввести новое название и снять галочку "Перейти к редактированию шаблона".

Шаг 2

Теперь перейдем в следующую папку:

\bitrix\templates\нужный_шаблон_сайта\components\bitrix\news\шаблон_компонента\

В этой папке требуется найти файл .parameters.php. Редактируем его, естественно, как PHP. Теперь самое сложное - туда необходимо правильно добавить следующий код:
// Если хотим фильтровать по коду раздела:
"SECTION_CODE" => array( 
	"NAME" => GetMessage("IBLOCK_SECTION_CODE"), 
	"TYPE" => "STRING", 
	"DEFAULT" => '', 
),

// Или если хотим фильтровать по ID раздела:
"SECTION_ID" => array( 
	"NAME" => GetMessage("IBLOCK_SECTION_ID"), 
	"TYPE" => "STRING", 
	"DEFAULT" => '', 
),
В этом файле уже есть несколько элементов, включенных в массив $arTemplateParameters. Просто нужно сделать аналогично.

Шаг 3

Не забываем сохранить файл.
Теперь необходимо задать то самое сообщение, которые мы вызвали ранее строчкой "NAME" => GetMessage("IBLOCK_SECTION_ID"). Делается это следующим образом. Переходим дальше в папку:

\bitrix\templates\нужный_шаблон_сайта\components\bitrix\news\шаблон_компонента\lang\ru\

В ней есть ещё один файл .parameters.php, где как раз перечислены вызываемые сообщения для параметров настройки. В этом файле, аналогично имеющимся записям, вставляем ещё одну:
// Если хотим фильтровать по коду раздела:
$MESS ['IBLOCK_SECTION_CODE'] = "Код раздела";

// Или если хотим фильтровать по ID раздела:
$MESS["IBLOCK_SECTION_ID"] = "ID раздела";

Шаг 4

Последний штрих. Возвращаемся в первую папку, где редактировали файл из Шага 2:

\bitrix\templates\нужный_шаблон_сайта\components\bitrix\news\шаблон_компонента\

В этой папке также есть файл news.php, содержащий вызовы различных компонентов, которые входят в комплексный компонент bitrix:news. В этом файле нужно найти включение блока bitrix:news.list и вставить туда ещё один параметр:
// Если хотим фильтровать по коду раздела:
"PARENT_SECTION_CODE" => $arParams["SECTION_CODE"],

// Или если хотим фильтровать по ID раздела:
"PARENT_SECTION" => $arParams["SECTION_ID"],
Сохраняем файл. Теперь, если перейти на страницу, где выводится компонент "Новости", в его настройках появится ещё один пункт (или два, если вы решили использовать и ID и код раздела) с названием "Код раздела" или "ID раздела", где указывается соответствующее значение.