Компоненты в Битриксе представляют собой строительные блоки, из которых строится публичная часть сайта. Каждый компонент решает конкретную задачу и выводит результат своей работы.
В компонентах Битрикса реализовано разделение логики и представления. Логика реализуется в самом компоненте, а представление через шаблоны. Зачем нужно такое разделение? Чтобы удобнее было разделять данные разных типов и не мешать все в одну кучу. Плюс к тому если, например, одному человеку понадобиться подредактировать какую-то часть шаблона, а другому надо подправить PHP код, то в результате получиться дикий ад. Плюс к тому, разделение PHP, HTML и JavaScript делает код более читаемым и удобным.
Структура папок коспонента Битрикс

Код компонентов лежит в папке /bitrix/components/. Подпапки будут являться пространствами имен. Например в пространстве имен bitrix лежат системные компоненты. Менять их не рекомендуется. Лучше создайте свою папку типа mycompany. Каждая папка в ней будет названием для компонентов битрикса. Теперь рассмотрим структуру папка компонента битрикса.
Все более-менее понятно из самих названий, но все-таки стоит сделать пояснения.
Папка lang

В этой папке хранятся тексты для компонента, подпапки данной папки могут быть ru, en и др. языки. Структура этих папок должна повторять структуру компонента.
Как видим, структура папки повторяет структуру папок компонента. Файлу .description.php в корневой папки компонента соответствует файл .description.php из языковой папки. Что же находиться внутри этих файлов? Рассмотрим структуру файла .description.php в папке /land/ru
$MESS["BCAT_DEFAULT_TEMPLATE_NAME"]="Теги блога"; $MESS["BCAT_DEFAULT_TEMPLATE_DESCRIPTION"]="Позволяет редактировать теги сообщений блога"; $MESS["BCAT_NAME"]="Блоги";
Тут мы видим массив $MESS в котором задаются текстовые строки, которые будут вызываться из файла .description.php из корня компонента. Взглянем на этот файл.
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
$arComponentDescription = array(
"NAME" => GetMessage("BCAT_DEFAULT_TEMPLATE_NAME"),
"DESCRIPTION" => GetMessage("BCAT_DEFAULT_TEMPLATE_DESCRIPTION"),
"ICON" => "/images/icon.gif",
"SORT" => 320,
"PATH" => array(
"ID" => "communication",
"CHILD" => array(
"ID" => "blog",
"NAME" => GetMessage("BCAT_NAME")
)
),
);
Значения для текстовых полей берутся из файлов в папке lang при помощи функции GetMessage($arg), где $arg — это ключ в массиве $MESS. Например, следующий код:
$str = GetMessage("BCAT_DEFAULT_TEMPLATE_DESCRIPTION");
Значение $str будет завно значению $MESS[‘BCAT_DEFAULT_TEMPLATE_DESCRIPTION’].
Папка help

help — тут находятся файлы, для обеспечения пользователя справочной информацией. В папке могут содержаться подпапки идентификатором языка. Внутри должен находиться файл index.php. Также папка должна содержать файл .tooltips.php. В этих файлах должен объявляться массив $arTooltips, ключами у которого являются идентификаторы параметров. А значения берутся из файла сообщений, о котором чуть ниже. Структура папки help:
Вид файла .tooltips.php:
$arTooltips = array(
"MESSAGE_COUNT" => GetMessage("MESSAGE_COUNT_TIP"),
"PATH_TO_BLOG" => GetMessage("PATH_TO_BLOG_TIP"),
"PATH_TO_BLOG_CATEGORY" => GetMessage("PATH_TO_BLOG_CATEGORY_TIP"),
"PATH_TO_POST" => GetMessage("PATH_TO_POST_TIP"),
"PATH_TO_POST_EDIT" => GetMessage("PATH_TO_POST_EDIT_TIP"),
"PATH_TO_USER" => GetMessage("PATH_TO_USER_TIP"),
"PATH_TO_SMILE" => GetMessage("PATH_TO_SMILE_TIP"),
"BLOG_VAR" => GetMessage("BLOG_VAR_TIP"),
"CACHE_TIME_LONG" => GetMessage("CACHE_TIME_LONG_TIP"),
"SET_NAV_CHAIN" => GetMessage("SET_NAV_CHAIN_TIP"),
"SET_TITLE" => GetMessage("SET_TITLE_TIP"),
"POST_PROPERTY_LIST" => GetMessage("POST_PROPERTY_LIST_TIP"),
);
Ключи масива $arTooltips — это символьные идентификаторы параметров компонента. Сами значения подсказов берутся уже знакомой нам функцией GetMessage.
Папка Templates
Самая интересная папка, тут хранятся шаблоны. Подпапками являются шаблоны. В самых шаблонах должен быть файл template.php. Он вызывается автоматом. Шаблон представляет собой заготовку из HTML-кода, в которую подставляются нужные значения. Если в папке шаблона лежит файл стилей style.css, то он будет автоматически подключен.
Подключение компонента
Подключение компонента производиться функцией IncudeComponent. За подробностями обратитесь к документации. Приведем пример:
$APPLICATION->IncludeComponent( "bitrix:catalog", "template", Array( "SEF_MODE" => "N", "IBLOCK_TYPE_ID" => "catalog", "ACTION_VARIABLE" => "action", "CACHE_TIME" => 1*24*60*60, "BASKET_PAGE_TEMPLATE" => "/personal/basket.php", ) );
- bitrix:catalog» — название компонента. Причем обратите внимание, сначала указывается пространство имен(bitrix), а потом название компонента.
- «template» — название шаблона. Если этот аргумент не указан, то будет вызван шаблон .default.
- Array(…) — массив параметров. Этот массив в компоненте будет доступен как массив $arParams.
На этом на сегодня все.