Готовые решения

StaticFilesPlus — автоматическое создание статических элементов с поддержкой категорий

Плагин для MODX 3, который автоматически сохраняет чанки, шаблоны, сниппеты и плагины в статические файлы при их сохранении в админке.​

Зачем это нужно?
При разработке на MODX удобно работать с элементами через IDE (PhpStorm, VS Code и др.), используя Git для версионирования. Плагин автоматизирует создание статических файлов и правильно организует их по категориям с транслитерацией русских названий.​

Возможности

  1. Автоматическое создание файлов — сохраняете элемент в админке, файл создаётся автоматически​
  2. Поддержка категорий — файлы размещаются в папках по категориям с учётом иерархии​
  3. Транслитерация — русские названия категорий преобразуются в латиницу (например: «Дизайн сайта» → «dizayn_sayta»)​
  4. Использует настройку pdotools_elements_path — не нужно хардкодить пути​
Работает с MODX 3 и PHP 8.0+​
FastDevLab
18 ноября 2025, 17:14
modx.pro
1
6 833
+5

PdoPage без jQuery

Давно делал костылями пагинацию без jQuery
недавно дошли руки поковырять PdoPage

Скажу сразу в скрипте могут быть баги
У меня с ресурсами работает отлично
ВитОс
01 октября 2025, 18:25
modx.pro
2
663
+8

MODX HTML Cache Plugin

Плагин для MODX, который сохраняет сгенерированные страницы в HTML-файлы и отдает их напрямую без парсинга MODX.
Это позволяет значительно ускорить работу сайта на фронтенде.

ЗЫ: Делался плагин в основном для статики и лендингов!!! (Если в шаблоне есть динамические данные (например, корзина, личный кабинет), лучше исключить его из кэширования.)

Файлы сохраняются в директории:
core/cache/html_pages/{template_id}/
Имя файла формируется так:
{resource_id}_{md5(uri)}.html
vectorserver
30 сентября 2025, 10:18
modx.pro
3
516
+7

Этот хук обрабатывает форму "Купить в 1 клик", создает заказ в miniShop2

Подходит для Formit, FetchIt на других потетсровать не удалось)))
Искал решение но тут на портале много заморочек с правкой скриптов JS и тп, думаю самый просто вариант это хук…
vectorserver
05 сентября 2025, 07:56
modx.pro
2
1 322
+6

Авто обновление индекса mSeach2 через cron

Может кому пригодится крон для массового обновления индексов #msearch2 #cron

Инструкция:
— создаем фай в корне msearch2_cron.php содержимое кода ниже.
— запуск к примеру curl www.ru/msearch2_cron.php

<?php

// Отключение буферизации
ignore_user_abort(true);
set_time_limit(0);
ob_implicit_flush(true);
ob_end_flush();

header('Content-Type: text/html; charset=utf-8');
echo '<pre>';
ob_flush();
flush();

define('MODX_API_MODE', true);
require 'index.php';

/** @var modX $modx */
$modx->getService('error', 'error.modError');
$modx->setLogLevel(modX::LOG_LEVEL_FATAL);
$modx->setLogTarget(XPDO_CLI_MODE ? 'ECHO' : 'HTML');

/** @var modUser $adminObj */
$adminObj = $modx->getObject('modUser', ['sudo' => 1]);
$modx->user = $adminObj;


$offset = 0;

while (true) {
    /** @var modProcessorResponse $response */
    $response = $modx->runProcessor('mgr/index/create', [
        'limit' => 1000,
        'offset' => $offset,
    ], [
        'processors_path' => MODX_CORE_PATH . 'components/msearch2/processors/'
    ]);

    if ($response->isError()) {
        echo "Ошибка: " . $response->getMessage() . "\n";
        ob_flush();
        flush();
        break;
    }

    $data = $response->getObject();
    if ($data['offset'] >= 1) {
        echo "Индексировано: {$data['offset']}\n";
        ob_flush();
        flush();
    }


    // Если offset == 0 → завершаем
    if ($data['offset'] === 0) {
        echo "Получен нулевой сдвиг. Индексация остановлена.\n";
        ob_flush();
        flush();
        break;
    }

    // Обновляем offset для следующего шага
    $offset = $data['offset'];

    // Если достигли конца
    if ($offset == 0) {
        echo "Индексация успешно завершена.\n";
        ob_flush();
        flush();
        break;
    }

    //sleep(1); // пауза между порциями (можно убрать)
}
vectorserver
11 июля 2025, 10:29
modx.pro
2
1 215
+5

Вставка CSS в <style> через маркеры и data-атрибуты

Всем добра! Пишу впервые статью, и повод для неё оказался вполне практичным: нужно было повысить показатель First Paint на одном из проектов. В процессе оптимизации стало понятно, что стандартное подключение CSS через

<link rel="stylesheet">

Становится узким горлышком — оно замедляет отрисовку и задерживает появление контента на экране.
Чтобы этого избежать, было решено встроить критически важные стили прямо в HTML, используя тег style.
Так браузер сразу видит нужные правила и начинает отрисовку без лишних пауз.

Дмитрий Середюк
02 июня 2025, 13:27
modx.pro
3
1 605
+5

Проверка на новые файлы с уведомлением в телегу

Здравствуйте.

Прочитал новый топик о новом нашествии вирусов, которые меняют файлы и что-то там «майнят» создавая нагрузку.
Решил поделиться своим простым скриптом, который контролирует появление новых файлов их изменения, и если таковые будут выявлены, вышлет уведомление в телеграм. Нужно поместить данный скрипт в папку в корне сайта.
Например, detect/file_change_detector.php

Я например, запускаю раз в 6 часов по крону.

P.S.
Пишите, если решение будет востребовано могу создать компонент для MODX

Update:
Компонент создан для MODX2 и MODX3. Загрузил в репозиторий, жду модерации.

Ivan K.
15 мая 2025, 13:43
modx.pro
4
1 834
+9

DateAgo

У меня возникли сложно с DateAgo, поэтому решил написать свой снипет, может кому пригодиться.
Артур Сергеевич
09 мая 2025, 14:16
modx.pro
1
1 620
+5

Отправка цели "Заказ оплачен" в Яндекс Метрику, если пользователь не вернулся на сайт из платёжной системы

Приветствую, друзья.

Расскажу, как я решил задачу с отправкой цели «Заказ оплачен» в Яндекс.Метрику, точнее статуса Заказа на «Оплачен». Что здесь такого, можете подумать вы? Вот и я так же подумал, но всё оказалось несколько сложнее, и готовых решений на этот счёт тоже нет.

Представьте себе сценарий: покупатель приходит на сайт, оформляет заказ и после оформления переходит на страницу платёжной системы для оплаты заказа. Всё, вроде бы, просто, но как отправить цель в Метрику, если пользователь не вернулся из платежной системы, и просто закрыл страницу? Ведь счётчик Метрики представляет собой JavaScript API, а значит работает в браузере и пользователь должен вернуться обратно на сайт на какую-то страницу, где мы выполним код отправки цели.

Т.к. мы не можем на это повлиять, то решать этот вопрос мы будем с помощью API Метрики, офлайн-конверсий, плагина для MODX, а также нам придется расширять поля заказа.

Дмитрий
01 апреля 2025, 13:48
modx.pro
4
1 451
+8

Простая drag-n-drop зона для отправки файлов с помощью FormIt

Привет, друзья!

Передо мной возникла казалось бы, банальная задача — сделать форму, которая будет отправлять файлы на почту с drag-n-drop зоной.

Мне почему-то крайне не хотелось подключать и развлекаться со сторонними библиотеками типа dropzone.js или filepond, да и вообще как-то не очень много информации я нашел на этот счёт, поэтому было решено сделать своё небольшое решение, как говорится, на коленке, которым я с вами и поделюсь. Моё решение представляет из себя простую визуальную дроп-зону, она не загружает файлы на сервер и т.д., то есть вы просто скидываете в неё несколько файлов, а их отправка на почту будет производиться средствами FormIt.

Дмитрий
22 марта 2025, 21:17
modx.pro
2
1 056
+6