alex19pov31 / bitrix-helper
Helper collection for bitrix
v0.2.3
2019-05-28 07:10 UTC
Requires
- php: >=7.0
Requires (Dev)
- mockery/mockery: ^1.2
- phpunit/phpunit: ^6.5
README
Bitrix helper
Коллекция хелперов для CMS Bitrix.
Установка
composer require alex19pov31/bitrix-helper
Получение идентификатора инфоблока по его коду:
- code - Код инфоблока
- iblockType - Тип инфоблока
- minutes - время кеширования списка инфоблоков в минутах
function getIblockId(string $code, ?string $iblockType = null, int $minutes = 0): ?int;
Пример:
/** * shoes - код инфоблока * catalog - идентификатор типа инфоблока (не обязательный параметр) * 30 - время кеширования в минутах */ getIblockId('shoes', 'catalog', 30); // 2
Получение класса для работы с HL блоком
/** * 1 - идентификатор HL блока * 30 - время кеширования в минутах */ getHlBlockClass('1', 30); /** * table_comments - имя теблицы HL блока * 30 - время кеширования в минутах */ getHlBlockClass('table_comments', 30); /** * TableComments - название HL блока * 30 - время кеширования в минутах */ getHlBlockClass('TableComments', 30);
Получение информации о HL блоке
/** * 1 - идентификатор HL блока * 30 - время кеширования в минутах */ getHlBlock('1', 30); /** * table_comments - имя теблицы HL блока * 30 - время кеширования в минутах */ getHlBlock('table_comments', 30); /** * TableComments - название HL блока * 30 - время кеширования в минутах */ getHlBlock('TableComments', 30);
Подключение модуля
loadModule('iblock');
bxApp(); // $APPLICATION
appInstance(); // Application::getInstance()
Выполнить произвольный SQL запрос к базе
echo sql('show tables')->fetch();
Тегированный кеш
taggedCache(); /** * Отчистка кеша по тегу */ taggedCache()->clearByTag('tag_name');
Инициализация тегированного кеша
/** * ['catalog', 'cars'] - теги для кеша * /catalog - расположение кеша */ initTagCache(['catalog', 'cars'], '/catalog')
Кеширование
/** * 30 - время кеширования в минутах * cache_key - ключ кеширования */ $cacheData = cache(30, 'cache_key', '/', 'cache', function() { initTagCache(['simple_cache'], '/simple'); // инициализация тегированного кеша return "данные которые надо закешировать"; }); /** * Отчистка данных кеша */ cleanCache('cache_key', '/', 'cache'); /** * Записть данные в кеш (с предварительной отчисткой кеша) */ setCacheData(30, 'cache_key', '/', 'cache', 'данные для кеширования');
Подключение компонента
initComponent('bitrix:catalog', 'test', ['CACHE' => 'Y'])->show(); // Call in component $arResult['bitrix:catalog'] = initComponent('bitrix:catalog', 'test_template', ['CACHE' => 'Y']); // Call in component template $arResult['bitrix:catalog']->show(); initComponent('bitrix:catalog') ->setTemplate('test_template') ->setParams(['CACHE' => 'N']) ->cache(120, 'cache_key') // Кеширование вывода компонента на 120 минут по ключу cache_key ->show(); /** * Инициируем компонент без вывода, * задаем имя в стеке вызова чтобы вызвать в другом месте */ initComponent('bitrix:catalog') ->setTemplate('new_template') ->setParams(['PARAM' => 'local acces to value']) ->setNameInStack('wery_impotant_component'); // задаем имя в стеке вызова компонентов use Alex19pov31\BitrixHelper\ComponentHelper; /** * Получаем компонент из стека по заданному имени и вызываем его */ ComponentHelper::getByNameInStack('wery_impotant_component')->show(); ComponentHelper::getStack(); // стек вызова компонентов
Область редактирования элемента инфоблока
- tpl - Объект шаблона компонента
- elementId - Идентификатор элемента
- iblockId - Идентификатор инфоблока
- iblockType - Тип инфоблока
- description - Надпись в области редактирования
function initEditIblockElement(CBitrixComponentTemplate $tpl, int $elementId, int $iblockId, string $iblockType, string $description = null): string;
Пример:
<div id="<?= initEditHLBlockElement($this, 4, 2, 'catalog'); ?>"> ... </div>
Область редактирования раздела инфоблока
- tpl - Объект шаблона компонента
- elementId - Идентификатор элемента
- iblockId - Идентификатор инфоблока
- iblockType - Тип инфоблока
- description - Надпись в области редактирования
function initEditIblockSection(CBitrixComponentTemplate $tpl, int $sectionId, int $iblockId, string $iblockType, string $description = null): string;
Пример:
<div id="<?= initEditIblockSection($this, 4, 2, 'catalog'); ?>"> ... </div>
Область редактирования элемента HL блока
- tpl - Объект шаблона компонента
- elementId - Идентификатор элемента
- hlBlockName - Имя таблицы/имя HL блока/идентификатор HL блока
- description - Надпись в области редактирования
function initEditHLBlockElement(CBitrixComponentTemplate $tpl, int $elementId, string $hlBlockName, string $description = null): string;
Пример:
<div id="<?= initEditHLBlockElement($this, 4, 'hl_table_name', 'catalog'); ?>"> ... </div> <div id="<?= initEditHLBlockElement($this, 4, 'HLName', 'catalog'); ?>"> ... </div> <div id="<?= initEditHLBlockElement($this, 4, '1', 'catalog'); ?>"> ... </div>