2 часа назад
Дополнение доступно 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 шаблонизатора Fenom.
С другой стороны, если вы хотите высветить алерт из какой-то произвольной библиотеки, то инициализировать его внутри вышеописанного кода не составит проблем. Если же вы хотите высветить свою стилизацию/текст при помощи идущего в комплекте с AjaxForm jGrowl, то его вызов тоже довольно легко воспринимается наитивно..)
Что же до удаления дефолтного алерта, то реализуется примерно так:
— копируем этот код в произвольный файл
— в вызове сниппета AjaxForm указываем при помощи настройки &frontend_js путь до свежесозданного файла
— в самом файле удаляем вот эту строку
(аналогичным способом можно также удалить другие типы алертов, избавляясь от строчек, начинающиеся с AjaxForm.Message)
Если честно, не уверен, что проблемы с сессией связаны именно с вышеописанным случаем (проверил в связке ms2Gallery + ckeditor — ошибка не воспроизвелась), но могу предложить вставлять прямую ссылку на картинку, а не плейсхолдер:
закладка «галерея» -> выбираете нужное изображение (кликаете) -> нажимаете на превьюшку -> копируете адрес открывшегося окна
Ну и глянуть лог ошибок/консоль при воспроизведении ошибки — может что покажет.
Но не стоит забывать, что это не отменит втроенный алерт из коробки. Т.е. желательно также добавить в вызов сниппета параметр &frontend_js, указывающий на кастомный скрипт обработки формы без вывода итогового алерта.
2. Валидация на уровне php выполняется сниппетом Formlt. (подробнее)
3. Это реализуется при помощи плейсхолдеров и дефолтных скриптов AjaxForm.
Соответственно, в вызов pdoPage прописываются и параметры, относящиеся к пагинации, и параметры, относящиеся к сниппету, который возвращает результаты.
Иначе говоря, вам нужны шаблоны tplPageFirstEmpty, tplPageFirst, tplPageLastEmpty и tplPageLast.
+ если вы хотите присвоить им «пустое» значение, то необходимо прописывать это через @INLINE (т.е. в обход чанкам).
Пример:
Особое внимание обратить на параметры шаблонов.
— нужен не level3, а level2.
+ в случай, если у вас в контейнере будет 3 или менее ресурса — последний пункт не будет проходить т.к. у него в классах будет висеть «last».
Скорее всего, idx всех ресурсов больше 3.
2. Предположим, у вас есть 2 раздела — «Список событий за текущий день» (id 1) и «Архив» (id 2). Тогда содержимое созданного php-файла будет примерно следующим:
Цитата:
Если вопрос с меню косметического плана — то можно решить задачу при помощи jquery.
В противном случае разве что вызывать при помощи pdoResources первый уровень меню, а внутри при помощи него же — второй (с выставленным &limit). Или попробовать расписать составной джоин потомков к первому вызову.
UPD: …или же вообще сверстать все руками, без запросов к бд. А активный пункт присваивать уже при помощи Jquery.
Вообще, тут скорость во многом упирается в глубину поиска и количество дочерних документов, а дальше по приоритету — хостинг и вложенные сниппеты/модификаторы.
Для сравнения, на своем сайте на modhost'e (минимальный тариф) некешируемый вызов двухуровнего меню (суммарно ~18 ресурсов) выполняется за 0.06 секунд (кешируемый за 0.01).
Грубо говоря, есть структура:
И нужно вывести список всех видео, с получением некоторых полей от родителя?
В таком случае код будет примерно такой:
В самом же чанке у нас есть плейсхолдер [[+parent]] и при помощи сниппета pdoField мы можем вытащить из родителя любые требуемые данные.
— решение не слишком хорошее с позиции кол-ва запросов, но задачу решит.
Как альтернатива — можно воспользоваться leftJoin'ом и Select'ом (документация) и подцепить в вызов требуемые поля от родителя.
(подробнее)
1) копируете содержимое и создаете кастомный файл скриптов Tickets
(чтобы не затерлось при обновлении)
2) в системных настройках Tickets указываете путь до свежесозданного файла
3) после 194 строки прописываете закрытие модального окна.