Многие задачи на сайте можно решить, используя стандартные компоненты. Достаточно бывает изменения шаблона компонента или использование обработки параметров компонента в файле result_modifier.php.
Файл result_modifier.php, подключается непосредственно перед подключением шаблона компонента. Этот файл получает на вход массив результатов работы компонента и массив параметров вызова компонента. Таким образом, можно изменить массив результатов работы компонента под конкретный шаблон.
Например, системный компонент полностью подходит для сайта, за исключением того, что он не возвращает какое-то дополнительное поле. В данном случае следует создать файл result_modifier.php в шаблоне компонента и дописать в массив результатов работы компонента дополнительное поле. Могут быть и другие варианты использования этого файла.
Однако для решения некоторых задач может потребоваться создание собственных компонентов.
Собственные компоненты могут быть созданы пользователем самостоятельно в соответствии с документацией. Или же они могут быть созданы на основе системных компонентов, путем упрощения или частичного изменения функционала.
Все компоненты находятся в папке /bitrix/components/. Системные компоненты находятся в папке /bitrix/components/bitrix/. Содержимое этой папки обновляется системой обновлений и не может изменяться пользователями.
Внимание! Изменение чего-либо в папке системных компонентов /bitrix/components/bitrix/ может привести к непредсказуемым последствиям.
Пользовательские компоненты могут находиться в любых других подпапках папки /bitrix/components/, например в данном демонстрационном проекте специально создана папка /bitrix/components/demo/, в которой размещаются примеры пользовательских компонентов.
В качестве примеров пользовательских компонентов представлены следующие:
- Компонент показа списка новостей
- Компонент показа детальной страницы новостей
- Комплексный компонент новостей news
На страницах данного раздела приведены примеры их подключения и использования.
Подключение компонентов выполняется в визуальном редакторе:
В коде страницы подключение компонента выполняется следующим образом:
<?$APPLICATION->IncludeComponent("demo:news.detail", ".default", Array(
"IBLOCK_TYPE" => "news",
"IBLOCK_ID" => "3",
"ELEMENT_ID" => $_REQUEST["ID"],
"IBLOCK_URL" => "news_list.php",
"CACHE_TYPE" => "A",
"CACHE_TIME" => "3600",
"DISPLAY_PANEL" => "N",
"SET_TITLE" => "Y",
"ADD_SECTIONS_CHAIN" => "N",
"DISPLAY_DATE" => "Y",
"DISPLAY_NAME" => "N",
"DISPLAY_PICTURE" => "Y"
)
);?>
Обратите внимание: название подпапки папки /bitrix/components/ используется для группировки компонентов и при их подключении. Например, все системные компоненты расположены в папке /bitrix/components/bitrix.
Соответствующий код подключения системных компонентов выглядит следующим образом:
$APPLICATION->IncludeComponent("bitrix:news.line", ...)
Для пользовательских компонентов из папки /bitrix/components/demo подключение выполняется так:
$APPLICATION->IncludeComponent("demo:news.line", ...)
Обратите внимание, создание пользовательского компонента на основе системного имеет определенные минусы: компонент не будет обновляться , а значит не будут исправляться ошибки и добавляться новый функционал.
Подробную информацию по созданию компонентов вы можете найти в документации для разработчика.