Компоненты Битрикса.

Компоненты в Битриксе представляют собой строительные блоки, из которых строится публичная часть сайта. Каждый компонент решает конкретную задачу и выводит результат своей работы.

В компонентах Битрикса реализовано разделение логики и представления. Логика реализуется в самом компоненте, а представление через шаблоны. Зачем нужно такое разделение? Чтобы удобнее было разделять данные разных типов и не мешать все в одну кучу. Плюс к тому если, например, одному человеку понадобиться подредактировать какую-то часть шаблона, а другому надо подправить 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.

На этом на сегодня все.

 

 

Вам также может понравиться

About the Author: Vladimir Kusakin

Hi. I am web developer. For the past 9 years, I've been developing applications for the web using mostly PHP and Python. About me

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *