компоненти бітрікс

У цій статті на простому прикладі буде описано створення компонентів для 1С-Бітрікс. Як вони влаштовані і чому потрібно їх використовувати.

трохи теорії

Компонети 2.0 (старі версії розглядати не будемо) дозволяють розділити логіку і уявлення - це перший великий плюс використання компонентів. Другий великий плюс - це можливість використання кешування.

Краще відразу приступити до практики і спробувати що-небудь зробити. Поставимо собі найпростіше завдання - нехай наш компонент повинен буде виводити список розділів Інфоблоки. Це завдання навряд чи на практиці десь знадобиться, але зате вона дуже проста і допоможе розібратися в тому, як взагалі влаштовані компоненти 1С-Бітрікс.

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

У каталозі / bitrix / components / створимо новий каталог, в якому будуть зберігається наші компоненти. Я назвав його prmedia. Тепер створимо каталог для нашого компонента /bitrix/components/prmedia/sections.list/. Зазвичай структура папок і файлів компонента виглядає так:

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

Помістимо в файл .description.php наступний код:

Нічого складного - просто масив з описом компонента.

Наступний файл - .parameters.php:

Цей файл краще розглянути більш докладно. Ключ PARAMETERS масиву $ arComponentParameters являє собою масив з описом параметрів. Нехай у нашого компонента буде тільки один параметр - IBLOCK_ID (ID Інфоблоки, з якого ми будемо виводити розділи). Ключі NAME - назва параметра, TYPE - тип, MULTIPLE - множинність (якщо 'Y', то наш параметр зможе приймати масив значень), PARENT - батько (параметри можна ділити на групи. В цій статті не розглядається). Зверніть увагу на другий параметр CACHE_TIME - він дефолтний для компонентів Бітрікс і встановлює час кешування.

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

'; CModule :: IncludeModule ( 'iblock'); if ($ this-> 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 ''; $ This-> IncludeComponentTemplate ();>?>

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

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

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

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

Тепер все готово, залишилося тільки викликати наш компонент. Як ми пам'ятаємо, компоненти викликаються в публічній частині сайту. Створимо прямо в корені сайту файл test.php:

Підставте в цей код ID якогось Інфоблоки, в якому є розділи, і виконайте скрипт в браузері.

Що далі

У статті не розглянуті угруповання параметрів компонента, створення комплексних компонентів і багато іншого. Кешування розгляду не докладно. Можливо, я напишу статті на ці теми пізніше. Мета даної статті - просто отримати загальне уявлення про створення компонентів для 1С-Бітрікс.

Код мало не робочий -
передаємо IBLOCK_ID
"IBLOCK_ID" => 1

а обробляємо ID
$ Iblock_id = $ arParams [ 'ID'];

власне в component.php правимо
$ Iblock_id = $ arParams [ 'IBLOCK_ID'];

і в темлейте я б висновок $ category [ 'NAME'] не в title посилання запхав, а в анкор - наочніше

а в цілому -
Офігенний ПРИКЛАД.
ТЕ ЩО ПОТРІБНО !
ДЯКУЄМО.

Код мало не робочий - передаємо IBLOCK_ID "IBLOCK_ID" => 1 а обробляємо ID $ iblock_id = $ arParams [ 'ID']; власне в component.php правимо $ iblock_id = $ arParams [ 'IBLOCK_ID']; і в темлейте я б висновок $ category [ 'NAME'] не в title посилання запхав, а в анкор - наочніше а в цілому - офігенно ПРИКЛАД. ТЕ ЩО ПОТРІБНО. ДЯКУЄМО !

Схожі статті