Розробка компонента для cms бітрікс (стаття в журналі, травень 2018) - 1с-бітрікс

Але я хочу поговорити про стилі програмування під Бітрікс. Як не дивно це звучить, але «програмування під Бітрікс» - це не просто php-програмування: це поняття включає звичайно ж і php-код, але більше це все-таки певні обмеження і поняття самої платформи Бітрікс, як фреймворка. І основним таким поняттям є «цеглинка» платформи - компонент Бітрікс.

У незапам'ятні часи, років 5 тому в Бітрікс були лише прості компоненти - так звані WEB 1.0 (в останніх версіях Бітрікс їх вже і не видно). Ці компоненти по суті були структурами, які підключалися в коді виведення сторінки як файли. Ми ними цікавитися не будемо - не станемо ворушити минуле. Нам цікаві компоненти WEB 2.0 і ми спробуємо разом з вами зробити один такий компонент.

У компонентах WEB 2.0, які використовуються в даний момент в Бітрікс, можна легко розділити логіку і уявлення, для однієї і тієї ж логіки може бути безліч уявлень. Весь код компонента, включаючи шаблони, мовні файли, знаходиться в одній папці, що, природно, полегшує життя при перенесенні будь-яких компонентів між проектами.

Структура компонента Бітрікс

З чого ж складається компонент Бітрікс? Компонент Бітрікс - це папка з певною структурою файлів і підпапок. Ось власне і вона:

У цій папці знаходяться файли для забезпечення допомоги по компоненту

Можуть знаходиться скрипти інсталяції / деісталляцііі компонента (install.php / uninstall.php)

Потрібна для підтримки багатомовності в компоненті

Папка з шаблонами виведення компонента

Містить код компонента

Містить опис вхідних параметрів компонента

Як ви, напевно, помітили обов'язкових файлів у компонента всього 2 - component.php і .description.php

Скажемо ще пару слів про те де компоненти фізично знаходяться в системі і про таке поняття як просторах імен компонентів. Фізично компоненти повинні знаходиться в папці / bitrix / components /, або в підпапках цієї папки. Для компонентів, які поставляються разом з CMS Бітрікс виділена підпапка bitrix (/ bitrix / components / bitrix /) - змінювати там компоненти або писати свої туди не варто. Найкраще створити свою підпапку. Кожна з цих підпапок в папці / bitrix / components / утворює свій простір імен.

Приклад створення компонента

готуємо php-код компонента

Як приклад зробимо компонент, який виводить поточну дату і час. Причому формат виведення дати і часу задається вибором у властивостях. Взяли такий приклад виключно в методичних цілях, в реальних умовах такої компонент швидше за все буде нецікавий. Але на цьому прикладі ми опишемо як виконується розробка компонента. У більш складних випадках все реалізується схожим чином.

Отже, починаємо. І давайте відразу напишемо php-код, який виконує, то що ми описали.

Правда код просто виводить дату і можна вибрати інший формат. Краще помістити в змінну формат виведення дати.

І останній штрих - потрібно розділити логіку і уявлення:

робимо структуру папок і файлів компонента

Php-код ми підготували - тепер потрібно створити свій простір імен. Наприклад, dv - не знаю чому я люблю це поєднання символів. Для цього треба створити папку / bitrix / components / dv. У ній робимо папку компонента - date.current. І в ній, в свою чергу, створюємо 2 необхідних файлу і папку для зберігання шаблонів templates. В папці tempates.php повинна бути створена папка .default і в ній template.php.

Отримуємо таку структуру в папці /bitrix/components/dv/date.current:

component.php
.description.php
templates / .default / template.php

Реалізуємо компонент без вхідних параметрів

Поки зробимо компонент без можливості завдання вхідного параметра - формату дати.

templates / .default / template.php

Поточна дата

description.php
GetMessage ( «Поточна дата»),
«DESCRIPTION» => GetMessage ( «Виводимо поточну дату»),
);
?>

Як ви могли помітити в кожному з файлів компонента на початку пишеться рядок if (! Defined ( «B_PROLOG_INCLUDED») || B_PROLOG_INCLUDED! == true) die (); вона потрібна для того, щоб ці файли не можна було викликати безпосередньо з вікна браузера.

У найпростішому вигляді компонент готовий - його можна викликати в коді сторінок за допомогою конструкції:

IncludeComponent (
«Dv: date.current»,
«.default»,
Array (
),
false
);?>

Реалізуємо компонент з вхідними параметрами

description.php
GetMessage ( «Поточна дата»),
«DESCRIPTION» => GetMessage ( «Виводимо поточну дату»),
«PATH» => array (
«ID» => «dv_components»,
«CHILD» => array (
«ID» => «curdate»,
«NAME» => «Поточна дата»
)
),
«ICON» => «/images/icon.gif»,
);
?>

array (),
«PARAMETERS» => array (
«TEMPLATE_FOR_DATE» => array (
«PARENT» => «BASE»,
«NAME» => «Шаблон для дати»,
«TYPE» => «STRING»,
«MULTIPLE» => «N»,
«DEFAULT» => «Y-m-d»,
«REFRESH» => «Y»,
),
),
);
?>

І змінюємо файл з логікою компонента, щоб він міг використовувати параметр, який ми задаємо:

Що ж ми зробили?

Ми створили компонент, в найпростішому вигляді. Ми не враховували багатомовність, не враховували можливість створення допомоги до компоненту і принади кешування компонентів.
Велика частина замовних компонентів для Бітрікс створюється шляхом зміни компонентів, які йдуть в поставці Бітрікс. Тому дуже потрібно добре вивчити стандартні компоненти, перед тим як програмувати нові. Швидше за все завдання, яку ви хочете вирішити - вже вирішили розробники Бітрікс.

Навігація по публікаціям