8 минут назад
Доброго времени суток.
Подскажите, как правильно составлять наборы при выгрузке товаров через mSync? Делать прямые запросы на добавление этих связей?...
msProductKits - удобное управление товарами-комплектами (наборами товаров) 28
Вчера в 19:45
Расширяешь класс msOrderHandler (поключение) Копируете из старого submit Заменяешь там $user_id = $this->ms2->getCustomerId(); на $user_id = $t...
Кастомизация minishop'a 6
Вчера в 10:22
Вижу, спасибо.
Ошибочно решил, что если есть в документации minishop2, то в старых версиях есть и сам код не посмотрел.
Предыдущий идентификатор статуса при событии 'msOnChangeOrderStatus' 4
Вчера в 09:27
Привет, Алексей.
1. Как определяем ботов
Проверка идёт по User-Agent в ms3rv_is_bot() (helpers.php). Используется regex по типичным маркерам краул...
ms3RecentlyViewed - Недавно просмотренные товары для MiniShop3 2
17 февраля 2026, 10:07
Здравствуйте, компонент куплен, на основной домен ставится, на dev. не ставится,
Could not generate encryption key
Vehicle 04b9f528f736384b46f71324...
[msProductRemains] Компонент учёта остатков товара 179
16 февраля 2026, 19:33
Новая обновленная версия уже в магазине modstore.pro/packages/sites-themes/theme.bootstrap
[Theme.Bootstrap] Новая версия с Bootstrap 4 31
14 февраля 2026, 18:07
Добрый вечер!
Кто смог настроить оплату в этом компоненте?
вставил по инструкции в чанк tpl.msoneclick.send ссылку с параметром [[+payment...
msOneClick - «Купить в один клик» 104
14 февраля 2026, 13:53
Баг с обновлениями подтвержден в ишьюсах модуля — github.com/modmore/importX/issues/64
Решения, кроме частичного, предложенного в ветке этого ишьюса ...
Обновление содержимого полей товаров через ImportX 3
12 февраля 2026, 22:44
Сочетание клавиш CTRL+ENTER не работает? Или только у меня… Приходится каждый раз нажимать «плэй»
[PhpConsole] - консоль для выполнения php кода в админке сайта 10
Еще через год-два надоест писать на xPDO, и захочется нормальный Eloquent.
А потом и установку\обновление перенести на Composer + запуск консольных скриптов через Symfony/Console, раз уже используется Phinx.
Давай, Николай! Может, ты заставишь сообщество MODX перейти на современные технологии! У меня с моей mmx-инициативой не взлетело, увы.
Правда, меня не нужно спрашивать, потому что всеми старыми дополнениями управляет сообщество уже года 4 как.
Но они не пишут мне код, я больше с ними советуюсь, как с резиновыми уточками. Например спрашиваю, какое ПО подойдёт для решения задачи, то есть использую как поисковик. Недавно вот понадобилось развернуть прокси для запросов в Youtube — узнал про tinyproxy, отлично работает.
Ну или надо было разробраться как работать с API Телеграм через tdlib, а это вовсе не то же самое, что Bot API. Готовых примеров для PHP я просто не нашёл, и вот здесь нейросети меня здорово выручили своими подсказками.
Что интересно, они генерировали нерабочий код, точнее код, который уже не работал с текущей версией tdlib, потому что использовал устаревшие методы. Но мне этого хватило написать свою, рабочую версию, по их примерам.
Так что да, я согласен, что нейросети разработчиков не заменят, но уже стали отличным инструментом и помощником. В том же PhpStorm неплохо прокачали автодополнение кода, например.
Скопирую сюда его текст для удобства:
Я еще в прошлом году от скуки сделал composer-версию, в которой перелопатил классы и добавил инсталлятор — но интереса никто не проявил.
Думаю, выхода miniShop 3 можно уже и не ждать. Да и просто выйти — это только половина дела, его нужно поддерживать и дорабатывать, а желающих давно нет.
Но на высоконагруженных проектах столкнулся с проблемой, что когда юзер создаёт новый коммент с картинкой, а другие видят это через вебсокеты, то сразу генерируют сотни запросов на конвертацию. Так как нет никакого механизма ограничения конкурентных запросов при холодном кэше, мы получим или кучу 500-х ошибок, или подвисший сервер.
Решаю это добавлением Varnish для запросов на картинки — он пропускает только 1 запрос на конвертацию, а всем остальным в очереди раздаёт уже результат из кэша.
Смысл же в том, чтобы сравнить свои файлы с эталонными на предмет изменений. Файлы ядра меняться не должны.
В идеале вообще автоматизировать и качать всё новое бесплатное из репозитория MODX / modstore, распаковывать и забивать в БД:
— название: MODX или дополнение
— версия дистрибутива
— путь к файлу
— sha1 хэш файла
Подкидываю альтернативную идею, если интересно — проверять версию MODX (или брать из настроек), скачивать соответствующий дистрибутив, и проверять хэши файлов сайта по файлам дистрибутива.
То есть, берём оригинальные файлы index.php в connectors, manager и корне, а так же файлы из core — и проверяем, чтобы все они присутствовали на сайте с оригинальным хэшем.
Если все основные файлы не изменены, то сайт не заражён и должен работать корректно.
Правда, есть еще возможность заражения только файлов дополнений, без ядра. Наверное, можно и их сверять с дистрибутивами из репозитория по той же логике — скачать нужную версию и сравнить хэши…
Кстати, вот вам еще идея — создать онлайн базу для проверки хэшей файлов MODX и дополнений через API. Чтобы простые GET запросы, типа /api/hash/modx/2.8.1/core/model/modx.class.php возвращали sha1 хэш запрошенного файла или 404.
Конечно, это не спасёт от уже залитых шеллов и вредоносов, но они не будут запускаться через сайт. А если запустятся и что-то изменят, то следующая проверка это покажет. И если раз за разом файлы будут меняться — то можно уже более внимательно искать, что там такое у вас залито.
Это чисто proof of concept, для реальной работы не предназначено, просто доказательство возможности такой работы.
Никого ни к чему не призываю, просто для информации.
Но в некоторых mmx-приложениях используется vesp/core для работы API, а у него внутри slim/slim — так что за фреймворками далеко ходить не надо, всё уже под рукой.
После работы с ним к xPDO возвращаться нет никакого желания. Да и смысла нет.
Всё, чему ты научишься в xPDO за пределами MODX никому не надо. Eloquent для разработчика гораздо полезнее.
Есть же заготовка — просто используй.
А я использую в production образы и хост одной и той же системы — Ubuntu (Debian), поэтому всё работает от одного юзера www-data. А на локальной MacOS проблемы с правами и вовсе нет.
Скорее всего, MODX просто не может создать директорию с кэшем из-за прав, да.
Спасибо на добром слове, планирую продолжать!
Обновляйся на версию 1.2.1
Судя по коду ты их просто положил в namespace MODX, так что да, так тоже работает.
Дело в том, что при переходе в addModifier здесь, мы попадём в фасад, а не в класс \Fenom, где этот метод и объявлен:
И это жутко бесит, когда пытаешь проследить логику работы.
Уж лучше вызывать нормально класс и подписывать его комментарием, зато никаких проблем с навигацией через IDE.
По моему, это гораздо проще и удобнее, чем городить фасады.
Но, в любом случае, спасибо за заметку. Кому-то, может, такое наоборот удобнее.
Ничего удалять не надо, просто добавляешь разрешение менять версии уже установленных пакетов ключом -W, что означает --with-all-dependencies.
Это не ошибка, там нет никаких ошибок. Он просто не может разрешить зависимость автоматически и просит тебя указать ему явно разрешение: