Андрей Шевяков

Андрей Шевяков

С нами с 28 сентября 2016; Место в рейтинге пользователей: #45

resComments — многоуровневые комментарии с пагинацией для ресурсов MODX3

Всем привет!
Представляю вниманию компонент для реализации комментариев/отзывов и т. д. к любым ресурсам MODX3.
Отличие от ticketsComments — возможность пагинации. Отличие от easyComm — многоуровневость.

Основные свойства
  • Неограниченная вложенность
  • Несколько вызовов на странице
  • Оценка публикации / ресурса
  • Оценки и рейтинг ответов
  • WYSIWYG-редактор Pell
  • Разметка Schema.org
  • Аватары пользователей с поддержкой Gravatar
  • Возможность удаления собственных комментариев
  • Email-уведомления менеджеру сайта, автору публикации, автору комментария об ответах
  • Пагинация (с pdoPage)
  • Работает без jQuery (за исключением связки с pdoPage)
  • Настраиваемые всплывающие уведомления (Notyf из коробки, по остальным см. системные настройки)
  • Приложение в админке с поиском, фильтрацией и возможностью создания / удаления / редактирования (включая ответы разных уровней)
  • Вкладка «Комментарии» у ресурсов с указанными шаблонами
  • Вкладка «Комментарии» у ресурсов с указанными ID
  • Системные события перед созданием комментария и после.
Демо здесь.

Павел Романов
25 декабря 2025, 13:47
modx.pro
1
1 020
+11

msVK (уведомление о новом заказе в ВК для minishop, готовое решение)

В связи с тем, что идет не хорошая тенденция с отключением мессенджеров, я решил переходить на отечественные решения, а именно в ВК.

На просторах интернета я натыкался на плагин, который делает уведомление в ТГ, имя этому дополнению msTelegram, спасибо большое человеку за его творение.

На его базе сделал свое, но для ВК, поэтому оставлю это здесь больше для себя, но да и вдруг кому будет полезно.

Дмитрий
14 декабря 2025, 09:21
modx.pro
2
473
+2

PdoPage без jQuery

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

Скажу сразу в скрипте могут быть баги
У меня с ресурсами работает отлично
ВитОс
01 октября 2025, 18:25
modx.pro
3
1 282
+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
5
951
+7

Compare - сравнение товаров miniShop2

Привет!

UPD 09.02.2026: для MODX 3 и MiniShop3 выпущена платная обновленная версия дополнения: Compare. У платной версии для miniShop3 больше возможностей, есть техническая поддержка и выпуск новых версий с улучшениями. Бесплатная версия для miniShop2 выложена как есть и развиваться, я думаю, дальше не будет.

Весь текст ниже относится к связке MODX 2 + miniShop2.

Сегодня выложил в github свою наработку с одного из сайтов — дополнение под названием Compare, которое умеет сравнивать товары.



Наумов Алексей
15 августа 2025, 12:37
modx.pro
5
1 761
+11

[MIGX] Исправляем "сжатые" таблицы

Всем привет, есть такая давняя проблема, когда редактируешь ТВ поля MIGX в ресурсах, они изначально «сжаты» влево… Я решил эту проблему, для этого нужен небольшой плагин.


Денис Усманов
05 августа 2025, 14:27
modx.pro
7
2 345
+12

eCommSender - отправка данных электронной коммерции

Приветствую! Представляю вашему вниманию компонент для отправки событий электронной коммерции в Яндекс Метрику и не только.
Артур Шевченко
22 июля 2025, 22:59
modx.pro
1
2 003
+11

Авто обновление индекса 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 462
+5

[Внимание] SQL-инъекция через miniShop2 (msPayment) в MODX — разбор и поиск причины

Хочу поделиться реальным кейсом: вчера на два сайта обнаружилась массовая SQL-инъекция через компонент miniShop2, которая загружала MySQL и выводила из строя сайт (я бы сказал нагружает сервер под 100%).

Версия minishop2 (2.8.3)

Что происходило
Началась высокая нагрузка на MySQL: десятки зависших SELECT COUNT(DISTINCT msPayment.id) с вложенными INFORMATION_SCHEMA, ORD(MID(...)), CAST(...), XOR() — т.е. типичный blind SQL injection.

Все вредоносные запросы шли от пользователя, к базе.

Сайт работал через miniShop2, и инъекции шли через msPayment и msDeliveryMember в JOIN-запросах.

Пример вредоносного запроса:

SELECT COUNT(DISTINCT msPayment.id)
FROM modx_ms2_payments AS msPayment
JOIN modx_ms2_delivery_payments Member ON Member.payment_id = msPayment.id AND 7574=IF((SESSION_USER() LIKE USER()), (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS A, INFORMATION_SCHEMA.COLUMNS B, INFORMATION_SCHEMA.COLUMNS C WHERE 0 XOR 1), 7574)
WHERE msPayment.id = 1 AND msPayment.active = 1
Сергей
22 июня 2025, 12:09
modx.pro
3
1 718
0

Пакет СДЭК — услуги курьерской службы для Minishop2

В MiniShop2 долгое время отсутствовал подходящий модуль для интеграции с СДЭК. После многочисленных запросов от клиентов было принято решение доработать существующий модуль. Поскольку времени на создание с нуля не было, за основу взял текущий вариант и переписал его, добавив необходимые функции.

В результате: виджет стал на 90% локальным, что положительно сказалось на скорости загрузки. Добавлена возможность отправки трек-кода клиенту напрямую из заказа, а также отправки самого заказа в СДЭК.

Реализованы новые хотелки:

  • Добавлена возможность интеграции с сервисом dadata.ru.
  • Добавлен фиксированный тариф для ПВЗ и доставки до двери.
  • Добавлена страховка к тарифу ПВЗ.
  • Обновлены иконки ПВЗ на Яндекс.Карте.
  • Кнопки выбора ПВЗ теперь наглядно отображают выбранный пункт выдачи.
  • На Яндекс.Карте показывает выбранный ВПЗ другим цветом (скрин прилагаю)
  • Отправка заказа в СДЭК
  • Обмен статусами доставки СДЭК => Minishop2
Пакет проходит тестирование на нескольких сайтах, и в случае получения положительной обратной связи планируется дальнейшая поддержка и техническое сопровождение.

Алексей
04 июня 2025, 22:55
modx.pro
1
819
+4