Трохи теорії:

В системі Bitrix закладена досить популярна архітектура: розділення даних, подання та обробки дій користувача на три окремих компонента.
Дана архітектура іменується як MVC (Model-view-controller, «Модель-представлення-поведінка»), і широко застосовується для проектування різних програмних продуктів.

У свою чергу шаблон MVC для Bitrix Framework формується з наступних частин:
Модель — це API;
Уявлення — це шаблони;
Контролер — це компонент;

У даній статті ми поговоримо про компоненті Bitrix.
Компонент — це контролер та подання для використання в публічному розділі. Компонент з допомогою API одного або декількох модулів маніпулює даними. Шаблон компонента (подання) виводить дані на сторінку.

Далі від теорії до практики. Розглянемо структуру простого компонента Bitrix.

Структура компонента

Стандартні компоненти Bitrix зберігаються в каталозі /bitrix/components/bitrix/. Як стверджують розробники: компоненти знаходяться в даному каталозі можуть перезаписуватися при оновленні, і для кастомізації компонентів переважно заводити окремий каталог для своїх компонентів.

У зв’язку з цим в каталозі /bitrix/components/ заводимо новий каталог, в якому будуть зберігатися наші компоненти.

Дамо йому ім’я custom. Тепер створимо каталог для нашого компонента /bitrix/components/custom/sections.list/. Звична структура папок і файлів простого компонента виглядає так:
— help
— images
— lang
— templates
.description.php
.parameters.php
component.php

Розглянемо все це по порядку.
У папці help зазвичай лежить файл .tooltips.php, що містить масив спливаючих підказок для налаштувань компонента. Не будемо на ньому зупинятися, приклад цього файлу можна подивитися в інших компонентах.
В папці images зазвичай лежить іконка компонента.
У папці lang лежать підпапки для мовних параметрів компонента.
У папці templates — всі шаблони компонента.
Можна відразу зробити шаблон за промовчанням для нашого компонету. Повний шлях до нього буде виглядати так: /bitrix/components/custom/sections.list/templates/.default/template.php.
Вставимо туди поки одну єдину рядок «Це шаблон компонента custom:sections.list».

У файл .description.php прописуємо наступний код:

‘Custom: список розділів инфоблока’,
“DESCRIPTION” => ‘Список розділів инфоблока’,
“ICON” => “/images/sections_list.gif”,
“CACHE_PATH” => “Y”,
“PATH” => array(
“ID” => “utility”,
),
);
?>

Отже, файл містить масив з описом компонента.
Далі слід файл .parameters.php:

array(
‘IBLOCK_ID’ => array(
‘NAME’ => ‘Id инфоблока’,
‘TYPE’ => ‘STRING’,
‘MULTIPLE’ => ‘N’,
‘PARENT’ => ‘BASE’,
),
‘CACHE_TIME’ => array(‘DEFAULT’=>3600),
),
);
?>

Розглянемо вміст файлу більш докладно. Ключ PARAMETERS масиву $arComponentParameters являє собою масив з описом параметрів. Наш компонент буде містити тільки один основний параметр — IBLOCK_ID (ID инфоблока, з якого будуть показуватися розділи).
Ключі:
NAME — назва параметра;
TYPE – тип;
MULTIPLE — множинність (якщо ‘Y’, то наш параметр зможе приймати масив значень);
PARENT — батько (параметри можна ділити на групи);

Зверніть увагу на другий параметр CACHE_TIME — він за замовчуванням для компонентів Bitrix та встановлює час кешування.

З масиву $arComponentParameters буде згенерований масив $arParams, який буде використовуватися в основному файлі нашого компонента — component.php

Вміст файлу component.php:

StartResultCache(3600))
{
$iblock_id = $arParams[‘IBLOCK_ID’];
$arFilter = array(‘IBLOCK_ID’=>$iblock_id);
$db_list = CIBlockSection::GetList(array(‘NAME’=>’ASC’), $arFilter, true, array(“ID”, “NAME”, “CODE”));
while($ar_result = $db_list->GetNext())
{
$arResult[] = array(
“ID” => $ar_result[‘ID’],
“CODE” => $ar_result[‘CODE’],
“NAME” => $ar_result[‘NAME’],
“ELEMENT_CNT” => $ar_result[‘ELEMENT_CNT’]
);
}
// echo “; print_r($arResult); echo “;
$this->IncludeComponentTemplate();
}
?>

Файл component.php містить всю логіку компонента, основне завдання цього файлу — сформувати з отриманих параметрів ($arParams) масив $arResult, який згодом буде переданий в шаблон компонента. Зверніть увагу на два коментаря. Раскомментировав їх, ви завжди зможете спостерігати за тим, які параметри приходять в компонент, і який результат отримує шаблон.
Код створеного нами компонента не складний — в залежності від отриманого параметра (ID инфоблока) ми робимо вибірку розділів і зберігаємо їх у масив $arResult. Слід звернути увагу на виклик методу $this->StartResultCache(). Він перевіряє, чи є у нашого компонента актуальний кеш. Якщо він є, то виводиться інформація з кеша. Отже, запиту до бази немає, масив $arResult не генерується, і навіть шаблон не подлючается (метод $this->IncludeComponentTemplate()).

Шаблон компонента

Наступний крок — створення шаблону для компонента. Шаблон приймає масив $arResult, згенерований у файлі component.php і виводить його вміст в браузер. Файл шаблону нашого компонента буде знаходитися за наступним шляхом: /bitrix/components/custom/sections.list/templates/.default/template.php
Код шаблону компонента:

Рубрики блогу

()

Виклик компонента

Після створення компонента його необхідно викликати в потрібній ділянці коду на сайті. Для цього створимо в корені сайту файл test.php і пропишемо в нього наступний код:

IncludeComponent(“custom:sections.list”, “.default”, array(
“IBLOCK_ID” => 1
),
false);
require($_SERVER[“DOCUMENT_ROOT”].”/bitrix/footer.php”);
?>

Для параметра IBLOCK_ID необхідно вказати ID инфоблока, містить розділи. Записавши параметри у файлі, слід запитати скрипт допомогою браузера, і переглянути результат./strong

Додав: htmaker, 15.02.2013 р.
(5 голосів, середній: 4,20 із 5)

Завантаження…

Діліться з друзями:

См. також:


Налаштування часу у VMBitrix
Рубрика: Bitrix, Linux

Видалення «кинутих» кошиків в системі Бітрікс
Рубрика: Bitrix

Використання highload-блоків в Bitrix
Рубрика: Bitrix

Як виконати SQL запит в Bitrix
Рубрика: Bitrix

Як підрахувати кількість елементів в Bitrix?
Рубрика: Bitrix

Динамічне масштабування зображень в Bitrix
Рубрика: Bitrix

Виключаємо користувача з ID=1 групи адміністраторів в Bitrix
Рубрика: Bitrix

Як скинути пароль адміністратора у Bitrix?
Рубрика: Bitrix

SQL-запити в бітрікс
Рубрика: Bitrix

Коментарі

  • Володимир пише:
    30.06.2017 в 14:10

    А посилання як прикрутити до цього?

    Відповісти