Розробка кастомного пакета (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
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1368
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1139
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1060