Компоненты в Битриксе представляют собой строительные блоки, из которых строится публичная часть сайта. Каждый компонент решает конкретную задачу и выводит результат своей работы.
В компонентах Битрикса реализовано разделение логики и представления. Логика реализуется в самом компоненте, а представление через шаблоны. Зачем нужно такое разделение? Чтобы удобнее было разделять данные разных типов и не мешать все в одну кучу. Плюс к тому если, например, одному человеку понадобиться подредактировать какую-то часть шаблона, а другому надо подправить 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"), "POST_VAR" => GetMessage("POST_VAR_TIP"), "USER_VAR" => GetMessage("USER_VAR_TIP"), "PAGE_VAR" => GetMessage("PAGE_VAR_TIP"), "BLOG_URL" => GetMessage("BLOG_URL_TIP"), "YEAR" => GetMessage("YEAR_TIP"), "MONTH" => GetMessage("MONTH_TIP"), "DAY" => GetMessage("DAY_TIP"), "CATEGORY_ID" => GetMessage("CATEGORY_ID_TIP"), "CACHE_TYPE" => GetMessage("CACHE_TYPE_TIP"), "CACHE_TIME" => GetMessage("CACHE_TIME_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.
На этом на сегодня все.
Или, может, есть другие компоненты и (или) способы, о которых я не знаю?