4 часа назад
Дополнение доступно modstore.pro/packages/photos-and-files/imageoptimizer
ImageOptimizer - WebP/AVIF и responsive <picture> для MODX 3 1
Вчера в 14:30
Добавил localizator3_default_language
Localizator3 для MODX 3: перевод полей и TV без отдельного context на язык, Vue 3 + PrimeVue 4
06 июля 2026, 23:49
Начиная с версии 3.0.0-beta добавлена поддержка MiniShop3
Минимальные требования:
PHP 8.4 MODX 3.2 MiniShop3
msInShopNotify 6
03 июля 2026, 13:55
Обновление
1.2.0-pl (03.07.2026)
— добавлены уведомления о заявках FormIt через hook-сниппет `maxNotifyFormIt`;
— добавлены уведомлени...
MaxNotify 2
03 июля 2026, 13:42
Да, планируется. Даже чуть больше, чем просто бонусная система)
[msBonus2] 1.3.0 Бонус-коды, уведомления о сгорании и совместимость с msMultiCurrency 7
30 июня 2026, 13:13
Добрый день! Может что-то с правами доступа к файлам? Посмотрите логи в modx, в php. С ходу сложно ответить, ранее не было таких случаев.
FileMan - прикрепление файлов к ресурсам для MODX 3 74
29 июня 2026, 21:27
Большое спасибо за подсказку, но проблема решилась переустановкой.
Зависает корзина минишоп2 2
27 июня 2026, 10:51
Применительно к данному компоненту не знаю, что можно сделать специфического для ИИ. Хотя в целом идея интересная, можно в пакет добавлять скилл или п...
Хватит логгировать как в каменном веке 🪵 5
26 июня 2026, 09:30
Все рекомендации учтены
CommerceBridge1C — двусторонняя интеграция 1С с MODX 3 и miniShop3 по CommerceML 2. 8
— в этом вызове замените строчки
на:
Важно: сейчас у вас реализован функционал, при котором перехватываются значения сортировки из адресной строки. При вышеописанных изменениях он пропадет. Если его необходимо сохранить — нужно будет дописать небольшой сниппет для переключения между желаемой сортировкой и вбитой в адресной строке.
— пример актуален для сниппетов семейства pdoTools.
(параметры могут отличаться, если выводящий сниппет другой — укажите, чем вы вызываете раздел.)
Если вам нужно сортировать его по клику, то необходимо или дописать перехват сниппетом get-значений для сортировки или воспользоваться готовым решением, как mFilter2.
У вас есть как минимум 2 способа реализовать данную задачу — через систему плагинов или через расширение класса корзины.
В обоих случаях принцип работы примерно такой:
— при требуемых событиях (добавление товара, изменение количества, удаление товара и тд) для каждого конкретного товара или циклом во всей корзине получаем параметры товаров
— из полученных данных выбираем id и запрашиваем для каждого товара кастомное тв-поле со списком скидок
— если тв-поле присутствует, то в отсортированным по необходимому для скидки количеству массиве, через цикл сверяем значение с количеством товара в корзине. Так получаем соответствующую скидку по количеству для каждого товара.
— умножаем скидку на исходную цену товара
— возвращаем значение
Вы ведь убрали все лишние строчки &element=`GetUserAction` и тому подобные?
К слову, если вам нужно вернуть список ресурсов конкретного пользователя (не авторизованного), то вам нужно обращаться на страницу с гет-параметром (пример: site.ru/articles?author=1), перехватывать этот параметр и по аналогии заносить в where.
А вообще, если сниппет ничего не возвращает, то всегда можно воспользоваться параметром &showLog=`1` чтобы наглядно увидеть, на каком этапе появляется ошибка.
Приложите, пожалуйста, код вызова AjaxForm.
— в инпутах отсутствует возможность переноса строки.
По поводу переносов строк (php.net): «В отличие от синтаксиса двойных кавычек и heredoc, переменные и управляющие последовательности для специальных символов, заключенных в одинарные кавычки, не обрабатываются.»
Вы можете написать простенький сниппет проверки, который заодно и решит проблему с постоянной обработкой AjaxForm вне зависимости от значения price:
[[! название_сниппета? &check=`[[*price]]` &acceptValue=`0` &tpl=`название_чанка_который_нужно_отобразить`]]
Код:
Вы можете для проверки поместить все содержимое then в отдельный чанк и вызвать модификатор в виде :then=`[[$название_чанка]]`?
Сейчас у вас выполняется следующая логика:
— обрабатывается содержимое внутри then=``
— проверяется значение [[*price]] (если у вас minishop2, то такое значение в принципе не находит, т.к. там требуется иной плейсхолдер)
— значение [[*price]] не равно 0 (так как его в принципе нет).
— вам ничего не возвращает, так как нет условия :else=``
Вот пример того, когда вам всегда вернется какой-либо результат:
В версиях 2.2 и 2.3 введен новый функционал характеристик товара (раньше реализовывалось ручным расширением таблиц) и торговые предложения.
По личному опыту, пожалуй, сейчас надежнее ставить версию 2.1.12-pl (находится в репозитории modx), так как она стабильна и поддерживает все выпущенные к ней дополнения.
Единственный минус подобного решения — из-за специфики работы преобразования плейсхолдеров модкса, в вашем примере вначале выполняется содержимое внутри then (в любом случае, вне зависимости от значения price), а уже после — проверка условия. Что негативно сказывается на производительности, в случае, если количество товаров больше 0 и форма не нужна в принципе.
Дальше, исходя из полученных данных — простой калькулятор на js.
Чуть сложнее будет только если для каждой фотографии можно будет выбирать отдельный формат, но это опять же вполне реализуется в рамках яваскрипта.