Всего 125 981 комментарий

Alexey
27 декабря 2021, 21:37
0
Привет! Ещё вариант: обязательное скрытое поле, которое аппендом добавляется в форму при помощи js по событию ховера на кнопку сабмита.

На больших магазинах не тестил, но на средних работает хорошо. Во всяком случае, до установки этой ловушки спам падал по 20-50 писем в сутки, а после — как отрезало.

Есть минус у этого способа — не отправить форму через ctrl+enter.
Александр Мельник
27 декабря 2021, 19:29
0
Да наверное таких большинство. Признаюсь, идея отсеивать спам просто по принадлежности к стране мне в голову не приходила. Я делал хуки которые не позволяли отправить с одного IP чаще чем раз в секунду, но не особо спасало.
Александр Мельник
27 декабря 2021, 19:25
0
И не сталкиваетесь с тем, что сервисы которые предлагают бесплатное определение страны по IP частенько лагают, часто недоступны?
У меня как то на одном проекте была задача — скрыть сайт от жителей Кореи, но оставить доступным всему миру. Тоже для начала выбрал какой-то бесплатный сервис, но он работал так не стабильно, часто отдавал 500 ошибки, что в итоге купили дорогой пакет.
Николай Савин
27 декабря 2021, 18:55
0
Мне кажется таких большинство. В особенности E-commerce
Александр Мельник
27 декабря 2021, 18:43
0
спасибо. Это несколько неожиданно, но для сайтов которые заточены только под одну или несколько стран — хорошее решение.
Николай Савин
27 декабря 2021, 18:28
+1
Я, например проверяю IP. Обратил внимание, что большинство запросов со спамом лезут из Европы. Потому чаще всего достаточно проверить страну отправителя. И если это не РФ (в моем случае Казахстан был) — то отклонять запрос.
Очень простенький хук на самом деле — и сильно спасает.
Не везде это конечно нужно, но в региональных магазинчиках сойдет
Вот пример кода для хука FormIT
$response = file_get_contents('https://ipwhois.app/json/?lang=ru&ip='.$_SERVER['REMOTE_ADDR']);
$response = json_decode($response, 1);
if(is_array($response)) {
    if($response['country_code'] === 'KZ') {
        return true;
    };
} 

return false;
Сuriosity
27 декабря 2021, 13:40
0
Все ваши новые поля поломаются, если, при внесении записи в это поле, вставить одинарную кавычку (апостроф).
Если следовать вашему примеру, то зайдя в профиль юзера, ​
в поле «Новое поле профиля» написать вместо:
Можно сохранять что угодно…
например
Можно сохранять что угод'но…

Сохраняем, заходим еще раз в профиль этого пользователя и вуаля… нового поля нет (а если было не одно новое поле, то и других бы тоже).

Неприятность находится здесь:
case "OnUserFormPrerender":
        if (!isset($user) || $user->get('id') < 1) {
            return;
        }

        if (!$modx->getCount('modPlugin', array('name' => 'AjaxManager', 'disabled' => false))) {
            $data['new_checkbox'] = $user->new_checkbox ? 'true' : 'false';
            $data['new_field'] = htmlspecialchars($user->Profile->new_field);
Внесите в код правку:
$data['new_field'] = htmlspecialchars($user->Profile->new_field, ENT_QUOTES);
Или, как вариант, впихнуть какую-то регулярку…
Надеюсь, это кому-то поможет.
Игорь Терентьев
27 декабря 2021, 09:46
+1
Привет, нужно открыть сниппет textGenerator и очистить этот параметр:
Иван Бочкарев
27 декабря 2021, 07:02
+2
Это не ошибка, а предупреждение.

Для отключения такого рода предупреждений установите системную настройку log_deprecated в состояние Нет
Фарит
Фарит
26 декабря 2021, 22:41
0
{'Это {скрипт|плагин|сниппет} генерации  {текстов|описаний|заголовков}  {для сайта|для {оптимизации|SEO}}' | textGenerator}
вот так не работает, всегда подтягивает текст из чанка: tpl.textGenerator.input

Как заставить работать? Кеши все чистил.
Николай Савин
24 декабря 2021, 20:07
0
json_encode возможно лишний
Евгений Webinmd
24 декабря 2021, 19:27
+1
попробуйте через программку postman, там потом позволяет сгенерировать код на нужном вам языке. ПОзволит исключить какие-то не явные ошибки (опечатка или лишний параметр)
Vladimir
24 декабря 2021, 18:30
0
Исправил
Для таких ошибок нужно смотреть в журналах по этому адресу /var/log/apache2 В журнале ошибок я обнаружил, что я использовал некоторые переменные в .htaccess, и мой сервер не поддерживал их, по логу нужно было включить 2 модуля.

$ sudo a2enmod headers
$ sudo a2enmod expires
$ systemctl restart apache2
Vladimir
24 декабря 2021, 18:08
0
Есть у кого инструкция как установить modx на VPS не нс нуля, сам пофикшу
R2m0x94 (Vasily)
24 декабря 2021, 17:03
0
Разумеется, если в настройке ms2_plugins была бы возможность добавлять плагины просто через запятую (например ms2_plugins: availability, custom_modules, deliverytime и т.д., которые подключены напрямую из папки plugins/), то отпали бы такие заметки, и деактивация плагинов проходила бы глаже при регистрации того же плагина в другое место.

Надеюсь на то, что в minishop3 появится такая возможность из коробки.
R2m0x94 (Vasily)
24 декабря 2021, 14:49
0
Привет, лично у меня при разработке ушло на это время, и я не смог понять, почему если я регистрирую плагин относительно пути
/plugins/order/custom_modules/index.php
И вдруг захотел сменить путь на более удобный
/plugins/custom_fields/index.php
У меня появляется эта ошибка, сразу задался вопросом, а как же происходит регистрация плагинов, но ответа не нашел, поэтому и решил проблему таким способом
/plugins/custom_fields/ms2/index.php
Странно, но работает))
R2m0x94 (Vasily)
24 декабря 2021, 14:29
0
Да, и главное не надо боятся переименовывать, переносить папки и файлы указывая правильные пути на сервере, а также переименовывать результат в ms2_plugins, чтобы не трогать бэкапы.
SELECT * FROM `modx_system_settings` WHERE `key` LIKE 'ms2_plugins'
Beegart
24 декабря 2021, 12:46
0
Здравствуйте, как избравиться от ошибки при установке?

modAction support is deprecated since version 2.3.0. Support for modAction has been replaced with routing based on a namespace and action name. Please update the extra with the namespace videogallery to the routing based system.