Данный проект представляет собой мини-фреймворк для разработки на Bitrix, предоставляющий набор переиспользуемых компонентов, утилит и абстракций для упрощения работы с основными модулями платформы.
(с) hipot studio, 2017 - nowadays
mailto: info AT hipot-studio DOT com
bitrix main 23.600+, PHP 8.3+
-
библиотека классов
/lib/classesдля копирования в/local/php_interface/lib/classes- объектная модель-обертка над инфоблоками
Hipot\IbAbstractLayer\IblockElemLinkedChains. Наследует весь функционал отHipot\BitrixUtils\Iblock(Abstract Iblock Elements Layer, см. ниже) - класс для работы с инфоблоками
Hipot\BitrixUtils\Iblock (aka IblockUtils) - класс для работы с hightload-блоками
Hipot\BitrixUtils\HiBlockи приложение реестра настроек на его основеHipot\BitrixUtils\HiBlockApps - ReadModel для highload-блоков: базовая модель
Hipot\Model\HiBaseModel, декораторHipot\Model\DataManagerReadModel, backend-контроллерHipotAjaxControllerи клиентская библиотекаhi_model.js - api для трансформации изображений и наложения водных знаков
Hipot\Utils\Img - класс для работы с кешированием
Hipot\BitrixUtils\PhpCacher/** @global $USER \CUser */ use Hipot\BitrixUtils\PhpCacher; $cachedUser = PhpCacher::cache('cached_users' . PhpCacher::getCacheSubDirById($USER->GetID()), 3600, static fn() => $USER); /** @var $cachedUser \CUser */ \Bitrix\Main\Diag\Debug::dump($cachedUser->GetID());
- объектная обёртка над агентами Bitrix в пространстве имён
Hipot\BitrixUtils\Agent - с магазином
Hipot\BitrixUtils\Sale (aka SaleUtils)и товаром каталогаHipot\BitrixUtils\Catalog - различные утилиты-хелперы
Hipot\Utils\UUtils (aka UnsortedUtils)и трейты-хелперы вnamespace Hipot\Utils\Helper\* - генератор определений констант для IDE
Hipot\Utils\ConstantIdeHelper - для отложенного подключения ресурсов
Hipot\BitrixUtils\AssetsContainer - различные сервисы в пространстве имен
Hipot\Services: не используем global's, используем DTOHipot\Services\BitrixEngine, а для проброса данных между элементами приложения используемHipot\Services\Registry - различные базовые типы в пространстве имен
Hipot\Types
- объектная модель-обертка над инфоблоками
-
автозагрузчик к классам
lib/simple_loader.phpдля копирования в/local/php_interface/lib/simple_loader.php
В современных реалиях лучше для этого использовать composer предназначенный для копирования в Bitrix-сайт -
немного "плавающих функций"
/lib/functions.php -
универсальные обработчики событий
/lib/handlers_add.phpс подключением констант-рубильников из файла/lib/constants.php -
скрипт xhprof.php для быстрого профилирования "боевых" проектов
-
страница
pages/error.phpс перехватом фатальных php-ошибок и отправке их на почту разработчикам (размещается в DOCUMENT_ROOT проекта) -
компоненты в папке
install/componentsдля копирования в/local/componentsHipot\Components\IblockList- универсальный компонент для работы с элементами инфоблоковhipot:iblock.list. Этот же компонент умеет использовать и Abstract Iblock Elements Layer. В теории двух компонент - этот компонент можно использовать и для создания карточки (детальной страницы) элемента (товара, новости...)Hipot\Components\IblockSection- компонент для работы со списком секцийhipot:iblock.sectionHipot\Components\HiblockList- список hightload блокаhipot:hiblock.listHipotAjaxController контроллер, позволяющий получать readModel-сущности в js через DataManagerReadModel иHipotAjaxComponent, позволяющей загружать динамичные блоки, когда они попадают в viewport, а также для создания любой ajax-логики:hipot.ajaxHipot\Components\Includerэлементарный компонент, позволяющий писать включения как шаблоны компонента битрикс (со своим стилем и скриптом, подключаемые вендором):hipot:includerHipot\Components\IblockMenuExtдля создания динамичных _ext-меню по элементам или по секциям инфоблоков:hipot:iblock.menu_extHipot\Components\MedialibraryCollectionListдля вывода коллекций медиабиблиотеки:hipot:medialibrary.collection.listHipot\Components\MedialibraryItemsListдля вывода списка элементов медиабиблиотеки (напр. определенного альбома) в публичную часть:hipot:medialibrary.items.listHipot\Components\CommentsBlogдля реализации комментариев из модуля блогов к детальным страницам элементов инфоблоков
-
пример файла
/local/php_interface/init.phpс подключением деталей фреймворка к битриксу можно найти в файле include.php
Пока для ручного осознанного копирования деталей, в дальнейшем будет модуль hipot.framework с установщиком.
- скопировать папку
srcмодуля в папку /local/modules/ (для новых проектов) или /bitrix/modules/ для рабочих - установить в админке модуль, чтобы он зарегистрировал себя
- можно добавить другие свои нужные классы в автозагрузчик (PSR-4, см. "Стиль написания кода и Структурирование файлов")
- можно отдельно копировать классы, функции, события и компоненты модуля, часто они самодостаточны и не требуют установки модуля (инкапсуляция на уровне классов/компонентов)
Подробности про Abstract Iblock Elements Layer
- Это фасад, т.е. фреймворк оберточного типа для удобства использования (facade поверх Bitrix)
- Это микрофрейморк, т.е. по-минимуму нужных методов, ничего избыточного и лишнего (microframework с минимальным набором абстракций).
- Стиль написания кода и Структурирование файлов
- Рекомендации для верстки макетов
- Особенно рекомендую заглянуть в раздел документов с использованными материалами

