5 часов назад
Стоит подумать и добавить, так как 100% потребуется как-то модифицировать данные из 1С. Частый кейс это не соответствие категорий на сайте и категорий...
CommerceBridge 1C — двусторонняя интеграция 1С с MODX 3 и miniShop3 по CommerceML 2. 7
Вчера в 00:27
Начиная с версии 3.0.0-beta пакет доступен под MODX3
Минимальные требования:
MODX 3.2.* PHP 8.4
Cabinet 20
20 июня 2026, 17:54
Только что столкнулся с таким на modx3, ранее 1 раз видел на modx 2.8 — не было времени и мотивации разбираться.
Но проблема есть и она старая.
Кл...
Не срабатывают статичные плагины 1
20 июня 2026, 13:08
С обновлением проблема ушла — отлично
Хватит логгировать как в каменном веке 🪵 3
19 июня 2026, 23:14
Обновление компонента
История изменений MaxNotify 3
1.2.0-pl
добавлен канал max в Центр уведомлений miniShop3;добавлена отправка из Центра дл...
MaxNotify3 3
19 июня 2026, 21:05
Копать надо в браузере. На вкладке сеть, если ответ 500, тогда в логи сервера.
Зависает корзина минишоп2 1
16 июня 2026, 15:00
Последний FormIt + последний FetchIt = белый экран
Последний pdoTools + последний MODx v3 = белый экран
FormIt 5.2: нативный AJAX и reCAPTCHA v3 5
15 июня 2026, 19:12
Благодарю) сижу ломаю голову, все сайты положил
Не получается установить PdoTools 6
Всего 125 977 комментариев
Тэвэха news-type теговая и значения приходят туда правильные
Я борюсь таким образом:
1. Проверяю в сниппете для FormIt с помощи регулярки на наличие ссылки типа site.com И email типа name@mail.com в поле текстового сообщения + в каждом поле такую проверку делаю (Имя, Телефон, Название фирмы, все поля чекаю). Если обнаружена ссылка, то возвращаю false и сообщение, что «Ссылки или электронные адреса в данном поле не разрешены. Вы можете приложить Word, Excel, PDF или текстовый файл с подробным описанием, ссылками и email.».
2. Использую сниппет csrfhelper:
А в вызов FormIt добавляю хук csrfhelper_formit.
3. Разумеется, добавляю простейшую проверку на пустоту скрытое поле URL (можно назвать поле любым человекоподобным словом) 4. Добавляю таймер на страницу, который не разрешает отправлять форму, если ты менее 15 секунд на странице (обычно спам-боты отправляют спам моментально после загрузки страницы, менее чем за 1-5 секунд) и показываю пользователю сообщение об ошибке «Слишком быстро нажата кнопка Отправить. Подождите, пожалуйста, 15 секунд и отправьте еще раз.»
В форме Fenom-тэг с текущим временем в формате UNIX. Сравниваем его в антиспам-сниппете.
5. На всякий случай вырезаю все html-тэги из всех полей :stripTags
6. В доработке хук, который чекает прилагаемый файл через форму: только pdf, word, excel, txt, zip, png, jpg; не больше 25 мегабайт (вроде как стандартное ограничение всеми почтовиками). Если проверка не пройдена, то показываем вежливое сообщение, что мы принимаем только такие файлы и не больше 25 мб.
7. Не забываем про проверку на обязательность заполнения полей со стороны клиента с помощью тэга required. А также проставляем все необходимы типы данных в инпутах: type=«email», type=«number» или же type=«text» во всех полях!
Мое мнение — самое главное вернуть очень понятный человеку и вежливый ответ, что здесь ссылки не разрешены в целях борьбы со спамом, Вы можете приложить файл со всеми ссылками и адресами.
Сам сниппет antiSpam:
В самой форме плейсхолдеры для вывода человекопонятных ошибок:
До этого у меня была всего-лишь одна проверка regExp на наличие ссылки и email в поле Сообщения (message). Спама почти не было, но стал приходить спам типа Buy our viagra on usa-pharma.shop, пропускались такие ссылки. Более длинная регулярка уже иногда блочила любой текст, если юзер пишет сообщение и после точки сразу пишет слово нового предложения.
Добавил проверку на 15 секундное ожидание (человеку просто не реально раньше 15й секунды заполнить все поля и отправить форму). Можно поставить 5 секунд.
После этого стали приходить сообщение только от человеков, никакого спама.
Не отловленные ошибки надо бы логгировать (у меня был этот кусок кода для логгирования не отправленных форм через FormIt, но не могу найти, он в старых хуках был).
Ну и можно по IP блочить вдобавок, как выше уже предложено.
Я не очень силен в PHP, как смог так и написал, поэтому большая просьба помочь хорошо доработать данный сниппет/хук и поделиться им здесь.
При клике выполняете
— считываете год, например с дата атрибута кнопки
— делаете ajax запрос на файл php передавая год
В php файле
— инициализируете modx (https://docs.modx.com/current/en/extending-modx/modx-class/loading-externally)
— вызываете сниппет pdoResources составив для него условие выбора года
— сниппет вернет html
Получаете этот html в том скрипте где делали ajax запрос. Выводите на страницу в нужно место.
Или можно написать плагин на 404 ошибку и там уже брать ресурс от первой части URL, и добавлять 2ю часть, конвертируя (как бы) фразу Russia-Moscow-Moldova-Kishinev в export_country=22, export_city=33, import_country=44, import_city=55 но учтите что есть города типа Ростов-На-Дону поэтому разделитель в URL лучше взять такой, чтобы не встречался в названиях городов, например | или транслитирировать названия с этим учетом.
То ли ещё будет, когда вы столкнетесь с одинаковыми названиями населенных пунктов…
Например:
Москва — город, столица России.
Москва, Кировская область, Верхошижемский район (деревня).
Москва, Псковская область, Порховский район (деревня)
Москва, Тверская область, Пеновский район (деревня)
и т.п.
Вообще, задача может иметь ряд подводных камней, если не чувствуете уверенность лучше перенесите топик из Вопросов в раздел Работа, переводить числовые id в текстовые значения всегда довольно проблематично
Спасибо!