Финансовая поддержка VPS, бесплатные дополнения и docs Донаты оплачивают сервер и двигают бесплатные дополнения MODX и документацию. Поддержать

Всего 126 308 комментариев

Иван Бочкарев
Иван Бочкарев
Выпустил новые версии:
[1.0.11-beta] — 2026-10-07

Добавлено
— Настройка `localizator3_request_language_param` (по умолчанию `language`): GET/POST-параметр с явным ключом языка. Приоритетнее cookie `localizator3_key` в connector/AJAX и в auto-detect редиректах. Пустое значение отключает переопределение. Пример: `?language=ru` при cookie `en`.
— Методы `localizator::getRequestLanguageKey()` и `applyLanguageFromKey()` для чтения параметра и синхронизации `cultureKey` / `localizator3_key`.

Изменено
— `resolveConnectorLanguage()`: порядок резолва — параметр запроса → Referer path → cookie → HTTP host.
— `applyLanguageFromCookie()` делегирует в `applyLanguageFromKey()`.

[1.0.10-beta] — 2026-07-17

Добавлено
— Методы `localizator::applyLanguage()`, `applyLanguageFromCookie()` и `resolveConnectorLanguage()` для синхронизации языка вне полноценного page request.

Исправлено
— Connector / AJAX: `OnMODXInit` вызывает `resolveConnectorLanguage()` (Referer path или cookie `localizator3_key`). Раньше язык выставлялся только при `X-Requested-With: XMLHttpRequest` + Referer, поэтому пакетные `connector.php` оставляли системный `cultureKey` (часто `ru`), пока витрина уже была на `en`.

Изменено
— Логика применения языка вынесена из `findLocalization()` в `applyLanguage()` для повторного использования.
Григорий
Григорий
Класс!
Пара моментов смутила:
1. Почему бы чанки сразу не вынести в файлы?
2. На фронте грузится свой CSS для стандартных блоков
<link rel="stylesheet" href="/assets/components/pagebuilder/css/pagebuilder-sections.css?v=1789902230" type="text/css" />
Верстка аналолгичная Bootstrap (проверил на pagebuilder_cards). Не лучше ли сразу использовать верстку и стили Bootstrap?
По моим наблюдениям, разработчики сайтов большей частью используют Tailwind или Boostrap…
Иван Бочкарев
Иван Бочкарев
Вышла новая версия:

[1.0.2-pl] — 2026-10-06
Fixed
  • #9 Права mxdadata_edit, mxdadata_logs, mxdadata_cache_clear теперь проверяются в connector.php и в Processors\Mgr\Processor::checkPermissions(). Карта action → permission: Settings/Save → edit, Logs/* → logs, Cache/Clear → cache_clear, остальное → view. UI скрывает вкладку логов и кнопку очистки кеша без соответствующих флагов в mxdadataCfg.permissions.
  • #10 connector.php теперь фильтрует action: имя процессора проверяется по белому списку, неизвестные действия отклоняются с ошибкой доступа. Ранее action брался прямо из тела запроса без проверки, что позволяло любому пользователю с правами mxdadata_view вызывать любые процессоры из Processors\Mgr\.
  • #11 Поле адреса в чанке tpl.mxdadata.msOrder теперь имеет атрибут name=«address», чтобы сниппет mxDadataAddressSuggest мог найти поле через селектор [name=«address»] и инициализировать подсказку DaData. Ранее поле имело только id, но без name, в результате чего querySelectorAll возвращал 0 элементов и подсказка не работала.
  • #12 Processor Settings/Get больше не возвращает api_secret в открытом виде ответа. Вместо этого возвращается api_secret_set — булево значение, указывающее, настроен ли секрет. Если значение есть, оно передается только при вызове процессора с правом mxdadata_edit. Ранее секрет возвращался открытым текстом в любом ответе коннектора, что позволяло любому менеджеру с правом mxdadata_view видеть секрет API.
Ольга
Ольга
В корзину дважды попала одна и та же позиция, не как обычно (товарХ — 3 шт.) а (ТоварХ — 2шт. и ниже тот же товарХ 1шт) все попытки повторить ошибку не увенчались успехом, ошибка не залогинилась, что это вообще могло быть, куда копать?
HSTQ
HSTQ
Сначала сравните ответ connector для исходного товара и его перевода во вкладке Network. Если у перевода поле миниатюры пустое, смена чанка или рендерера сама картинку не добавит: нужно получить ID связанного оригинала через Babel и вернуть его миниатюру в данные грида. Если URL уже есть, проверьте его HTTP-код и доступность из контекста админки
HSTQ
HSTQ
полезно посмотреть, какие URL запрашивают эти боты и сколько времени занимает их обработка. Частые обращения к поиску и фильтрам могут нагружать PHP сильнее, чем обычные страницы. Сопоставьте всплеск access.log с занятыми процессами PHP-FPM, затем ограничьте частоту именно дорогих запросов и повторите замер. robots.txt не остановит ботов, которые его игнорируют; увеличение памяти само по себе такую нагрузку на CPU не устранит.
Олег
Олег
Спасибо за ответ. У меня время создания заказа равно времени оплаты. Заказ оплачивается сразу через iframe на сайте. При нажатии на кнопку «оформить заказ» всплывает окошко робокассы и пока заказ не оплатить он просто не сформируется.
HSTQ
HSTQ
Здесь лучше разделить «заказ создан» и «заказ оплачен». Первое событие фиксируется при успешном создании заказа, второе — после проверенного уведомления платёжной системы на сервер.

Если человек закрыл браузер, надёжно вызвать у него reachGoal уже не получится. Для оплаты сохраняйте ClientID вместе с заказом и передавайте подтверждённое событие через офлайн-конверсии Метрики. Повторное уведомление платёжки должно обрабатываться без повторной конверсии. Время события берите по факту оплаты, а не по возвращению на страницу «спасибо».
HSTQ
HSTQ
В коде уже есть конкретная ошибка: формат даты Y-m-data H:i:s нужно исправить на Y-m-d H:i:s.

Ещё не стоит занимать полем ClientID штатный comment: покупатель может оставить там свой комментарий, а два поля с одинаковым именем дадут неоднозначный результат. Лучше отдельное поле заказа.

И время создания заказа не равно времени оплаты. Если выгружаете именно оплаченные конверсии, сохраняйте событие оплаты отдельно.
Prihod
Prihod
Для MODX 3 доступна ResVideoGallery 3.0.0-beta

Компонент полностью переписан под MODX Revolution 3.* (PHP 8.4+).

Что нового:

  • 10 видеосервисов: YouTube, Vimeo, RuTube, ВКонтакте, Dailymotion, Coub, а теперь ещё Google Drive, TikTok, Instagram и Facebook. Название, описание, длительность, обложка и теги подтягиваются по ссылке, короткие ссылки (vm.tiktok.com,fb.watch) разворачиваются сами.
  • Вертикальные ролики TikTok, Instagram и Facebook Reels проигрываются в окне 9:16.
  • Обложки хранятся в медиа-источнике. Превью нужных размеров, в том числе WebP и AVIF, собираются автоматически, а на сайте отдаются через srcset.
  • Новая вкладка «Видео галерея» у ресурса: карточки с перетаскиванием, фильтры по видеосервису, тегам, статусу и дате, массовые действия.
  • Галерея на pdoTools: работает с pdoPage и подгрузкой по кнопке. Видео проигрывается в модальном окне или прямо в карточке, есть пять эффектов при наведении и облако тегов с фильтрацией.
  • Видео от посетителей: форма добавления по ссылке на странице или в модальном окне. Можно разрешить её гостям или только авторизованным, ограничить по группам, задать лимиты, дать посетителю добавлять свои теги с подсказками и выбирать раздел.
  • «Мои видео»: личный кабинет автора со статусами «Опубликовано», «Черновик» и «На модерации». Автор может править, снимать с публикации и удалять свои видео.
  • Модерация: проверка новых видео и повторная проверка после правки, группы пользователей без модерации.
  • Безопасность: CSRF-токены, ограничение частоты запросов, reCAPTCHA 3 и Yandex SmartCaptcha, работа за Cloudflare, параметры форм подписаны на сервере.
  • Для разработчиков: системные события с возможностью отказать в действии или изменить данные, открытый REST API, JS-событие о добавлении видео, настройка вида через CSS-переменные.
Документация:
https://docs.modx.pro/components/resvideogallery/modx3

Версия для MODX 2 по-прежнему доступна, её документация: https://docs.modx.pro/components/resvideogallery/modx2