Это еще одна заметка из моего первого и, скорее всего, единственного заказа на Битриксе. Возможно, кому-нибудь она пригодится.
Эта инструкция является переделкой примера из официальной документации. Итак, начнем. Первым делом создадим требуемую структуру файлов:
- КОРЕНЬ/local/components/mynamespace — где «mynamespace» ваше наименование пространства имен;
- КОРЕНЬ/local/components/mynamespace/mycomponentname — где «mycomponentname» наименование вашего компонента;
- КОРЕНЬ/local/components/mynamespace/mycomponentname/component.php — обязательный файл, всегда называется так.
- КОРЕНЬ/local/components/mynamespace/mycomponentname/.description.php — необязательный файл описания функционала компонента, желательно создавать;
- КОРЕНЬ/local/components/mynamespace/mycomponentname/templates/.default — директория для шаблона и других файлов (css/js обычно) компонента;
- КОРЕНЬ/local/components/mynamespace/mycomponentname/templates/.default/template.php — файл шаблона компонента, в нем размещается разметка (HTML);
- КОРЕНЬ/local/components/mynamespace/mycomponentname/templates/.default/script.js — файл со скриптами компонента, который автоматически подключается, главное чтобы наименование было script.js.
- КОРЕНЬ/local/components/handlers/handle_components_query.php — свой файл, добавил только для примера обращения к файлу из компонента по AJAX’у. Его создавать не обязательно.
КОРЕНЬ/local/components/mynamespace/mycomponentname/component.php:
<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) { die(); } $arResult['MY_VAR_KEY'] = 'MY_VAR_VALUE'; $this->IncludeComponentTemplate();
КОРЕНЬ/local/components/mynamespace/mycomponentname/.description.php:
<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) { die(); } $arComponentDescription = [ "NAME" => 'Наименование компонента', "DESCRIPTION" => 'Описание компонента', ];
КОРЕНЬ/local/components/mynamespace/mycomponentname/templates/.default/template.php:
<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) { die(); } echo $arResult['MY_VAR_KEY']; // MY_VAR_VALUE // В этом месте размещается весь HTML-код компонента.
КОРЕНЬ/local/components/mynamespace/mycomponentname/templates/.default/script.js
$(document).ready(function () { $.ajax({ type: 'POST', url: '/local/handlers/handle_components_query.php', data: {"my_test_var": "my_test_value"}, dataType: 'html', success: function (data) { alert(data); } }); });
КОРЕНЬ/local/components/handlers/handle_components_query.php:
<?php require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php"); // global $USER; // Если нужен пользователь. // На странице js-код покажет alert с my_test_value echo $_POST['my_test_var'];
На этом все, эта заготовка компонента позволит избавиться от копирования одинаковых блоков на разных страницах. Вызывается данный компонент вот так:
<?php $APPLICATION->IncludeComponent( "mynamespace:mycomponentname", ".default", [], false ) ?>
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.