Всего 123 759 комментариев

Артур Шевченко
23 июня 2024, 21:37
+1
Лучше так
document.addEventListener('si:send:error', (e) => {
        const { action, target, result, headers, Sending } = e.detail;
        
        if (target.tagName == 'INPUT') {
            result.data.errors = {};
        }
    })
Артур Шевченко
23 июня 2024, 21:35
0
Я загрузил обновлённую версию в modstore
Ivan
23 июня 2024, 21:32
0
Что бы убрать ошибку при проверке конкретно поля сделал так
document.addEventListener('si:send:error', (e) => {
        const { action, target, result, headers, Sending } = e.detail;
        
        if (target.tagName == 'INPUT') {
            Sending.error = () => {};
        }
    })
Ivan
23 июня 2024, 21:26
0
Спасибо вам еще раз. На первый взгляд всего очень много, но если немного разобраться это очень круто)
Артур Шевченко
23 июня 2024, 21:24
+1
Если я меняю поле Имя, то всплывает ошибка, но класс не добавляется.
Это ошибка. В Версии 2.0.3 она будет исправлена.
Ivan
23 июня 2024, 21:17
0
Так же вы пишите, что сообщений об успешной валидации не существует, но если я ввожу на русском языке в поле name, то выводится сообщение ФОРМА ОТПРАВЛЕНА.
P. S. Добавил в пресет 'successMessage' => '', теперь сообщения нет. Ура
Ivan
23 июня 2024, 21:14
0
хм, Письмо победил. Нужно указать hooks = ''
Ivan
23 июня 2024, 21:12
0
Спасибо большое.

У меня есть форма


Пресеты


Так вот. Если я меняю поле Имя, то всплывает ошибка, но класс не добавляется.
так же отправляется письмо на указанный в стандартных настройках компонента емейл
Артур Шевченко
23 июня 2024, 21:03
0
Например, я не увидел все параметры которые можно указать форме data-si-*
Посмотри тут

Как указать форме, что бы она очищалась при отправке
Добавить в пресет параметр
'clearFieldsOnSuccess' => 1,
Можно ли, без сильных изменений указать, что бы стандартные уведомления были справа
Сделай копию стандартного JS конфига, поменяй параметр position на нужный, укажи путь к новому файлу конфига в системной настройке si_js_config_path.

как сделать что бы у поля так же появился класс si-error
Класс устанавливается полю с тем именем, которое ты указал в пресете в параметре validate, само поле ищется внутри data-si-form, если в форме несколько полей с одинаковым именем, то класс будет добавлен только первому.

как просто добавить класс, но не выводить сообщение об успешной или об неуспешной валидации
Сообщений об успешной валидации не существует, а чтобы отменить показ сообщений об ошибках, нужно написать обработчик на событие si:send:error в котором установить всем ошибкам в качестве сообщения пустую строку.

было бы круто понять как сделать, что бы не нужно было заранее знать название данного поля
Не очень понимаю чего ты хочешь, но есть возможность валидации массивов

Допустим я сделал в поле data-si-event=«change» data-si-preset=«russian». А так же в системной настройке sendIt указал емейл по умолчанию. Как сделать, что бы при выполнении данного события не было отправки письма?
SendIt не отправляет письма, это делает хук email компонента FormIt. В формировании списка параметров всегда используется пресет по умолчанию, в котором присутствует данный хук.
Артур Шевченко
23 июня 2024, 18:38
0
Примерно так
switch ($modx->event->name) {
    case 'OnDocFormSave':
        if ($resource->get('class_key') === 'msProduct' && $price = $resource->get('price')) {
            $q = $modx->newQuery('modTemplateVarResource');
            $q->where(['tmplvarid' => 1, 'contentid' => 1]); // получаем значения TV типа migx где записаны диапазоны
            $q->select('value');
            $ranges = $modx->getIterator('modTemplateVarResource', $q);
            if ($q->prepare() && $q->stmt->execute()) {
                $ranges = json_decode($q->stmt->fetch(PDO::FETCH_COLUMN), true);
                foreach ($ranges as $range) {
                    if ($range['min'] <= $price && $range['max'] > $price) { // проверяем входит ли цена в диапазон
                        $resource->set('range', "{$range['min']}-{$range['max']}"); // если да, то записываем диапазон в свойство товара созданное при помощи msAddFields
                        break;
                    }
                }
            }
        }
        break;
}
Дмитрий Вершинин
23 июня 2024, 17:35
0
Артур, а можешь выложить-показать этот плагин — «который при создании ресурса сразу определяет в какой диапазон он попадает»?
Татьяна
22 июня 2024, 11:22
0
Всем здравствуйте! Подскажите, пожалуйста, как в настройках экспорта и импорта следует указать название поля СВЯЗЬ.
В магазине очень много товаров, нужно выводить с этим товаром покупают… Нужно через таблицу все заполнить и импортировать. Но не пойму как поле называется. link, master. Предполагаю, что как производитель vendor.name, А как для связи прописать поле не понимаю.

Спасибо!
vit
vit
22 июня 2024, 09:08
0
Можно это сделать с помощью FormItSaveForm и все будет сохраняться в бд.
Если это к вам было подключено. Тогда в админке во вкладке FormIt можете посмотреть
R2m0x94 (Vasily)
22 июня 2024, 01:13
1
+1
/** @var $utm utmExample */
.htaccess
<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine On
    
    RewriteCond %{QUERY_STRING} (^|&)^utm_source=yandex($|&)
    RewriteRule ^(.*)$ /$1?utm_source=chromium&utm_medium=cpc&utm_campaign=metrica [R=301,L]
</IfModule>
plugin:
<?php
if ($modx->event->name == 'OnHandleRequest') {
    if ($modx->context->get('key') == 'mgr') {return;}
    if (strpos($_SERVER['REQUEST_URI'], 'utm_source=chromium') !== false) {
        $_SESSION['utm_saved'] = '?utm_source=chromium&utm_medium=cpc&utm_campaign=metrica';
        return;
    } else {
        if (empty($_SESSION['utm_saved'])) {
            return;
        }
        if (!empty($_GET['utm_source'])) {
            return;
        }
        $modx->sendRedirect($modx->getOption('site_url').ltrim($_SERVER['REQUEST_URI'], '/').$_SESSION['utm_saved']);
    }
}
return;
Илья Павлов
22 июня 2024, 00:10
0
Мертвый ресурс получается. Т.к.:
  1. 7 лет нет ответа на, казалось бы, несложный вопрос.
  2. Автор поста, судя по всему, забил на вопрос и стал дальнобойщиком.
  3. Сообщество пишет что-то невнятное в комментариях.
это ли ни *опа, товарищи? Закрывайте этот позор. Или киньте в меня решением вопроса! Сделайте что-нибудь уже!?
Илья Павлов
21 июня 2024, 23:15
0
Сложно спорить с тем, что дальнобойщик не может интересоваться разработкой на ModX.
R2m0x94 (Vasily)
21 июня 2024, 22:52
0
/* 
 * Просто неважно дальнобойщик он или нет,
 * главное найти тот или иной ингредиент, без того что было в памяти. С нами ты. Пацанам респект.
 */
Илья Павлов
21 июня 2024, 18:41
0
Есть ощущение, что какая-то недосказанность осталась, типа «7 лет прошло так то, я теперь дальнобойщик»?
Илья Павлов
21 июня 2024, 18:02
0
7 лет как одно мгновенье… ээх… согласен)

Я пока костыль придумал — сниппет, принимающий utm и выводящий его в навигационных ссылках (меню, списки документов).
Пытался сначала записывать UTM в куки, но он мгновенно удаляется (время жизни задавал как надо).
Т.к. текущее решение, как мне кажется, не совсем элегантно, гуглю тему.