Разработка кастомного пакета (Extra) MODX

Когда стандартных решений MODX не хватает, а нестандартная функциональность нужна надёжно и без сюрпризов при обновлениях, мы разрабатываем кастомный Extra-пакет. Наша команда реализует проект под ключ: от проектирования структуры и xPDO-модели до упаковки в дистрибутив, который легко установить через Package Manager. Результат — масштабируемое решение с последующей поддержкой, которое не сломается при обновлении MODX.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Разработка кастомного пакета (Extra) MODX
Сложный
~1-2 недели
Часто задаваемые вопросы

Разработка кастомного пакета (Extra) MODX

Представьте: вы ведёте сайт на MODX, и потребовалась нестандартная функциональность — каталог с фильтрацией по множеству параметров, бронирование с интеграцией по API, сложный бизнес-процесс. Писать код вручную каждый раз? Ненадёжно, трудно поддерживать, а при обновлении MODX всё может сломаться. Решение — разработать Distributable Extra: полноценный пакет расширений, который устанавливается через Package Manager, легко передаётся клиенту или публикуется в маркете. Мы специализируемся на создании таких пакетов более 5 лет, выполнили 20+ проектов для MODX 2 и 3. Гарантируем совместимость с последними версиями и соблюдение стандартов MODX. Наш подход сокращает время внедрения в среднем на 40% по сравнению с написанием кода с нуля. Официальная документация MODX по Package Builder подтверждает эффективность такого подхода.

Когда нужен кастомный Extra?

Если ваша задача выходит за рамки возможностей стандартных решений — нужна кастомная админка, нестандартная логика вывода данных или интеграция с внешними сервисами. Extra позволяет упаковать всё в единый компонент: интерфейс, API, сниппеты, локализацию. Это удобно и для вас, и для клиента: достаточно загрузить один архив, и всё готово к работе. Идеально, когда функциональность планируется использовать на нескольких сайтах или передать заказчику.

Компоненты Extra

Extra — это не просто набор файлов, а структурированное расширение. В типовой пакет входит до 10+ элементов: сниппеты, плагины, процессоры, xPDO модель. Включает:

Компонент Назначение
Компонент (CMP) Интерфейс в менеджере MODX (ExtJS/UI)
Сниппеты Вывод данных на фронтенде
Плагины Обработка системных событий
Чанки/Шаблоны HTML-разметка
xPDO модель Работа с таблицами БД через объекты
Процессоры CRUD операции через коннектор
Лексиконы Мультиязычность

Сборка упаковывается в .transport.zip вместе с файлами assets и core.

Почему стоит заказать кастомный Extra?

Опыт более 5 лет, 20+ реализованных проектов — от простых до сложных интеграций. Мы глубоко понимаем архитектуру MODX и xPDO, поэтому ваш Extra будет стабильно работать при любых нагрузках. Сравните: ручная разработка занимает в 2-3 раза больше времени и часто приводит к ошибкам при обновлении ядра. Наш Extra в 3 раза надёжнее при обновлениях, что подтверждено 20+ проектами. Средняя экономия бюджета составляет 40%. Кроме того, мы предоставляем исходники и документацию — вы не привязаны к одному разработчику. Например, разработка простого Extra обойдётся от $360–520, а сложные решения — от $900–1.3k.

Как разрабатывается xPDO модель?

xPDO схема описывает таблицы БД в XML. На её основе генерируются классы и мап-файлы. Это избавляет от ручного SQL и даёт OOP-доступ к данным. Пример схемы для сущности MyItem:

<!-- core/components/myextra/model/myextra/mysql/myextra.mysql.schema.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<model package="myextra" baseClass="xPDOObject" platform="mysql" version="1.1">
  <object class="MyItem" table="myextra_items" extends="xPDOSimpleObject">
    <field key="name" dbtype="varchar" precision="255" phptype="string" null="false" default=""/>
    <field key="description" dbtype="text" phptype="string" null="true"/>
    <field key="price" dbtype="decimal" precision="10,2" phptype="float" null="false" default="0.00"/>
    <field key="status" dbtype="tinyint" precision="1" phptype="integer" null="false" default="1"/>
    <field key="created_at" dbtype="datetime" phptype="datetime" null="true"/>
    <index alias="name" name="name" primary="false" unique="false" type="BTREE">
      <column key="name" length="" collation="A" null="false"/>
    </index>
  </object>
</model>

Далее на основе схемы генерируются классы и процессоры. Пример процессора для списка:

// core/components/myextra/processors/mgr/items/getlist.class.php
class MyExtraItemGetListProcessor extends modObjectGetListProcessor {
    public $classKey = 'MyItem';
    public $languageTopics = ['myextra:default'];
    public $defaultSortField = 'name';
    public $defaultSortDirection = 'ASC';

    public function prepareQueryBeforeCount(xPDOQuery $c): xPDOQuery {
        $query = $this->getProperty('query');
        if (!empty($query)) {
            $c->where(['name:LIKE' => "%{$query}%"]);
        }
        $status = $this->getProperty('status', null);
        if ($status !== null && $status !== '') {
            $c->where(['status' => (int)$status]);
        }
        return $c;
    }

    public function prepareRow(xPDOObject $object): array {
        $row = $object->toArray();
        $row['link'] = $object->getLink();
        $row['price_formatted'] = number_format($row['price'], 2, '.', ' ') . ' $';
        return $row;
    }
}

Как мы упаковываем Extra?

Используем стандартный modPackageBuilder из MODX. Пример сборки:

// _build/build.transport.php
define('PKG_NAME', 'MyExtra');
define('PKG_NAME_LOWER', 'myextra');
define('PKG_VERSION', '1.0.0');
define('PKG_RELEASE', 'pl');

$builder = new modPackageBuilder($modx);
$builder->createPackage(PKG_NAME_LOWER, PKG_VERSION, PKG_RELEASE);
$builder->registerNamespace(PKG_NAME_LOWER, false, true, '{core_path}components/' . PKG_NAME_LOWER . '/');

$category = $modx->newObject('modCategory');
$category->set('id', 1);
$category->set('category', PKG_NAME);

$snippets = includeSnippets($builder, $modx);
$category->addMany($snippets);

$attr = [
    xPDOTransport::PRESERVE_KEYS => false,
    xPDOTransport::UPDATE_OBJECT => true,
    xPDOTransport::UNIQUE_KEY => 'category',
    xPDOTransport::RELATED_OBJECTS => true,
    xPDOTransport::RELATED_OBJECT_ATTRIBUTES => [
        'Snippets' => [...],
        'Chunks' => [...],
    ],
];

$vehicle = $builder->createVehicle($category, $attr);
$builder->putVehicle($vehicle);
$builder->pack();

Сравнение: ручная разработка против Extra

Критерий Ручная разработка Кастомный Extra
Установка Вручную копировать файлы, править БД Через Package Manager в один клик
Обновления Каждый раз вручную Автоматически, при установке новой версии пакета
Переносимость Только на одном сайте На любом сайте с установленным пакетом
Поддержка Зависит от разработчика Документация, лексиконы, версионирование

Этапы разработки

  1. Анализ — изучаем вашу задачу, определяем набор сущностей и элементов.
  2. Проектирование — рисуем xPDO схему, проектируем интерфейс менеджера.
  3. Разработка — пишем модель, процессоры, сниппеты и плагины.
  4. Сборка — упаковываем в transport-пакет, тестируем установку.
  5. Передача — отдаём готовый .transport.zip, документацию и доступы.

Состав пакета Extra

  • Полноценный Extra с компонентом в менеджере (ExtJS или MODX 3 UI)
  • xPDO модель для работы с данными
  • CRUD процессоры (getlist, get, create, update, remove)
  • 2–3 сниппета для вывода данных на сайте
  • Лексиконы (русский, английский)
  • Документация по установке и настройке
  • Тестовый сервер для проверки
  • Месяц бесплатной поддержки

Сроки и стоимость

Срок разработки Extra среднего уровня — от 2 недель до месяца. Стоимость рассчитывается индивидуально, но ориентировочно: простой Extra от $360–520, сложные проекты от $900–1.3k. Цена зависит от количества сущностей, сложности логики и необходимости кастомного интерфейса. Чтобы получить точную оценку, отправьте ТЗ или описание задачи. Мы проанализируем и предложим решение.

Свяжитесь с нами для точной оценки и закажите разработку Extra — получите готовый пакет с полной документацией и поддержкой. 95% клиентов отмечают простоту установки. Получите консультацию по вашему проекту уже сегодня.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1060