PHPackages                             itgro/extensions - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. itgro/extensions

ActiveItgro-module[Utility &amp; Helpers](/categories/utility)

itgro/extensions
================

Помощник при работе с 1С-Битрикс

1.6.3(6y ago)11923MITPHPPHP &gt;=7.0.0

Since Feb 17Pushed 6y ago2 watchersCompare

[ Source](https://github.com/Grabatui/extensions)[ Packagist](https://packagist.org/packages/itgro/extensions)[ RSS](/packages/itgro-extensions/feed)WikiDiscussions master Synced 3d ago

READMEChangelogDependencies (3)Versions (9)Used By (0)

Bitrix Extensions
=================

[](#bitrix-extensions)

Модуль содержит в себе различного рода классы для облегчения непростой жизни разработчика сайтов под 1С-Битрикс.

Установка:
----------

[](#установка)

1. `composer require itgro/extensions`
2. Для корректной работы twig-шаблонов, необходимо выполнить инструкцию по настройке с **[maximaster/tools.twig](https://github.com/maximaster/tools.twig/blob/master/docs/configuration.md)**
3. Для работы ajax-роутера необходимо добавить в `urlrewrite.php` (желательно повыше):

    ```
    array(
        'CONDITION' => '#^\/ajax\/([^\/]*)#',
        'RULE' => 'handler=$1',
        'ID' => '',
        'PATH' => '/ajax/index.php',
    ),
    ```
4. Для работы динамических агентов необходимо добавить инициализацию ядра агентов посредством `(new \Itgro\Cron\Kernel)->register();`. *Внимание!* Сделать это необходимо после создания обработчика для регистрации агентов

Какие штуки имеются:
--------------------

[](#какие-штуки-имеются)

#### Классы-помощники:

[](#классы-помощники)

- `\Itgro\BufferView` - работа с `$APPLICATION->ShowViewContent()`, но в более узком и понятном круге;
- `\Itgro\Log` - небольшая обёртка для `CEventLog::Log()`;
- `\Itgro\Mail` - отправитель писем как через шаблоны Битрикс, так и через обычную отправку;
- `\Itgro\Router` - класс для возможности хранить все (более-менее простые) ссылки проекта в одном массиве и доставать их через короткий хэлпер. По умолчанию все алиасы хранятся в корне сайта в файле `routes.php`. Путь до этого файла (от корня сайта) можно изменить, объявив константу `EXTENSIONS_ROUTES_PATH`. Массив в `routes.php` имеет очень простую структуру вида:

    ```
    return [
        'auth' => '/personal/auth/',
        'register' => '/personal/registration/',
    ];
    ```

Т.о. можно через `\Itgro\Router::getByCode('auth')` (или хэлпер `route('auth')`) достать нужный путь;

- `\Itgro\Session` - обёртка для работы с сессией (все данные хранятся не в корне `$_SESSION`, а в подмассиве);
- По namespace'у `\Itgro\Bitrx\*` есть кучка различных классов, позволяющих доставать простые значение (аля "Дай id по коду").
    Все данные кешируются. Т.о. если вы через `\Itgro\Bitrix\IBlock\Iblock::getByCode()` достаните один раз id ИБ, то все последующие вызовы будут обращаться к уже закешированному значению.
- `\Itgro\Sharing` - класс (и обработчики рядом) для создания ссылок для шаринга в соц.сети.

#### Классы для работы с сущностями Битрикса:

[](#классы-для-работы-с-сущностями-битрикса)

- `\Itgro\Entity\IBlock\Base` - абстрактный класс для более удобной работы с `CIBlockElement`;
- `\Itgro\Entity\IBlock\Entity` - абстрактный класс (с предыдущим в качестве родительского), позволяющий каждый элемент возвращаемого массива использовать как объект;
- В `\Itgro\Entity\IBlock\Base` (и, соответственно, в `\Itgro\Entity\IBlock\Entity`) имеется трейт `\Bitrix\Entity\IBlock\WithEvents` (который Вы, естественно, можете использовать и в каких-нибудь других типах Битрикс-сущностей).
    Он позволяет вешать обработчики (обновление, добавление, удаление элемента) на конкретные Ваши сущности, чтобы обработчик срабатывал исключительно для определённого ИБ.
    Ваши сущности, конечно, можно расширять на новые обработчики (например, "При активации", которая расширяет `\Bitrix\Entity\IBlock\WithEvents::afterUpdate()`);
- `\Itgro\Entity\HighloadIBlock\Base` - абстрактный класс для удобной работы с Highload-ИБ;
- `\Itgro\Entity\DataManager\Base` - абстрактный класс для удобной работы с отдельными таблицами, для которых есть свой ORM-класс.

#### Расширители классов:

[](#расширители-классов)

- Возможность добавить свои ajax-обработчики посредством навешивания обработчиков на `\Itgro\Ajax\Distributor::EXPAND_HANDLERS_EVENT`:

    ```
    /**
     * В этом примере будут доступны запросы вида `/ajax/feedback/%method%/`,
     * каждый из которых будет делигироваться в соответствующий класс на соответствующий метод
     */
    event_manager()->addEventHandler('extensions', \Itgro\Ajax\Distributor::EXPAND_HANDLERS_EVENT, function (\Bitrix\Main\Event $event) {
        return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, [
            'feedback' => \Namespace\Some\Class::class,
        ]);
    })
    ```

    Или даже проще:

    ```
    \Itgro\Ajax\Distributor::setHandlers([
        'feedback' =>\Namespace\Some\Class::class,
    ]);
    ```

    Для универсальности данных от ajax-запросов, имеются классы по namespace'у `\Itgro\Ajax\Result\*`. Их можно возвращать в виде ответов ajax-методов и обрабатывать по типу возвращаемого объекта.
- Возможность добавить свои функции для Twig'а посредством навешивания обработчиков на `\Itgro\Twig\Extension\Functions::EXPAND_HANDLERS_EVENT`:

    ```
    event_manager()->addEventHandler('extensions', \Itgro\Twig\Extension\Functions::CREATE_HANDLERS_LIST_EVENT, function (\Bitrix\Main\Event $event) {
        return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, [
            'foo_func' => [\Namespace\Some\Class::class, 'fooFunc'],
            'bar_func' => [\Namespace\Some\Second\Class::class, 'barFunc'],
        ]);
    })
    ```

    Или даже проще:

    ```
    \Itgro\Twig\Extension\Functions::setHandlers([
        'foo_func' => [\Namespace\Some\Class::class, 'fooFunc'],
    ]);
    ```
- Возможность добавить свои фильтры для Twig'а посредством навешивания обработчиков на `\Itgro\Twig\Extension\Filters::EXPAND_HANDLERS_EVENT`. Код будет выглядеть примерно как в коде выше.
- Возможность создавать динамические агенты через классы. Каждый такой класс должен быть дочерним от класса `\Itgro\Cron\Agent` и иметь метод `call()`. Если Ваш агент должен принимать параметры и возвращать их же - делаете это в этом же методе.
    Само название функции либо можно прописать явно в параметре `name` агента-класса, либо само имя класса приведётся к camel\_case'у, из-за чего имя функции преобразуется вида `\Itgro\Cron\Agent -> itgro_cron_agent`.
- Возможность добавить своих агентов-классы через стандартную инциализацию:

    ```
    event_manager()->addEventHandler('extensions', \Itgro\Cron\Kernel::EXPAND_HANDLERS_EVENT, function () {
        return new EventResult(EventResult::SUCCESS, [
            \Namespace\Some\FirstAgent::class,
            \Namespace\Some\SecondAgent::class,
        ]);
    });
    ```

    Или даже проще:

    ```
    \Itgro\Cron\Kernel::setHandlers([
        \Namespace\Some\Agent::class,
    ]);
    ```

#### Манипуляции с административной панелью:

[](#манипуляции-с-административной-панелью)

- Манипуляция с определённым свойством на странице редактирования элемента:

    ```
    (new \Namespace\IBlockExtended\Entity)->addElementPropertyInformation(
        'IBLOCK_PROPERTY_CODE', // Код свойства, для которого отрабатывается js-функция
        function ($propertyId) {
            // JavaScript-код или JavaScript-функция, которые будут обрабатываться только на странице, где есть свойство с указанным кодом
            return 'javascriptFunctionName';
        }
    )
    ```
- Добавление кнопки на страницу связанных сущностей с фильтрацией по текущей сущности на страницу редактирования элемента

    ```
    (new \Namespace\IBlockExtended\Entity)->addElementAdminButton(
        (new \Itgro\Bitrix\Admin\Button\ElementEdit)
            ->withProperties([
                'iblock_type' => 'iblock_type_id', // Тип ИБ связанной страницы
                'iblock_code' => 'iblock_code', // Код ИБ связанной страницы
                'filter' => [
                    // Фильтр по текущей сущности
                    ['type' => 'property', 'code' => 'RELATED_PROPERTY_CODE'],
                ],
            ])
            ->withView([
                'place' => 'before', // Добавлять до или после кнопки копирования
                'style' => 'adm-btn-green', // Доп.классы для кнопки
                'name' => 'Элементы', // Заголовок кнопки
            ])
    );
    ```

###  Health Score

29

—

LowBetter than 59% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity14

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity63

Established project with proven stability

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~68 days

Recently: every ~1 days

Total

8

Last Release

2534d ago

PHP version history (2 changes)1.0.0PHP ^7.0.0

v1.0.4PHP &gt;=7.0.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/6553b5dda3a7646a2efb19ed1ac1d7b29bd75fb3c2f73bbcfe967f52a3cbd8a4?d=identicon)[itgro](/maintainers/itgro)

![](https://www.gravatar.com/avatar/78b1857550a0939e52bdc326317e2afa7b273fcb4bfdef671e6977c375c3e880?d=identicon)[Grabatui](/maintainers/Grabatui)

### Embed Badge

![Health badge](/badges/itgro-extensions/health.svg)

```
[![Health](https://phpackages.com/badges/itgro-extensions/health.svg)](https://phpackages.com/packages/itgro-extensions)
```

###  Alternatives

[ashallendesign/short-url

A Laravel package for creating shortened URLs for your web apps.

1.4k1.9M4](/packages/ashallendesign-short-url)[solspace/craft-freeform

The most flexible and user-friendly form building plugin!

52664.9k12](/packages/solspace-craft-freeform)[intervention/zodiac

Zodiac Sign Calculator

58191.7k](/packages/intervention-zodiac)[erlandmuchasaj/laravel-gzip

Gzip your responses.

40129.3k2](/packages/erlandmuchasaj-laravel-gzip)[solspace/craft-calendar

The most powerful event management and calendaring plugin!

1830.8k1](/packages/solspace-craft-calendar)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
