Артур Шевченко

Артур Шевченко

С нами с 24 мая 2019; Место в рейтинге пользователей: #4
Отправить деньги
Артур Шевченко
29 июня 2024, 11:29
+1
ваше решение можно использовать параллельно
Можно

С опциями товаров будет работать?
Это настолько само собой разумеется, что я не стал писать.

Мне не хватает силы своего воображения, чтобы представить это.
А зачем это воображать? Установите компонент на тестовом сайте на modhost и посмотрите.

А можно простецкий пример на fenom?
Читайте документацию
Артур Шевченко
25 июня 2024, 20:08
0
phpthumbon просто сниппет, который генерирует превью и сохраняет на сервере. Если тебе нужно хранить сгенерированные превью на другом сервере, то нужно использовать источники файлов. Modx поддерживает хранилище Amazon S3 из коробки.
Артур Шевченко
25 июня 2024, 19:09
0
Я не использую minishop, фильтр нужен только для статей-ресурсов, фильтрация нужна будет по ТВ полям которые polylang кажется переводит.
В любом случае, если это текстовые значения индексировать их плохая идея, так как по факту значение одно, просто на разных языках. Я бы заменил ключом, а переводы добавил в словари.
Артур Шевченко
25 июня 2024, 17:25
0
Совместим ли он с Polylang?
Polylang не умеет переводить значения опций, а переводы названий фильтров можно сделать через управление словарями.

Нужно ли делать индексацию каждый раз при создании нового ресурса?
Если ресурс создаётся через админку или стандартный процессор — нет не нужно.
Артур Шевченко
25 июня 2024, 10:08
0
Согласен, мои компоненты не для всех, они для тех, кто понимает, что делает.
Артур Шевченко
23 июня 2024, 21:59
0
А этот код есть
document.addEventListener('si:send:error', (e) => {
        const { action, target, result, headers, Sending } = e.detail;
        
        if (target.tagName == 'INPUT') {
            result.data.errors = {};
        }
    })
Артур Шевченко
23 июня 2024, 21:41
0
Это я ошибся. 2.0.4 следующая версия
Артур Шевченко
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
Артур Шевченко
23 июня 2024, 21:24
+1
Если я меняю поле Имя, то всплывает ошибка, но класс не добавляется.
Это ошибка. В Версии 2.0.3 она будет исправлена.
Артур Шевченко
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;
}
Артур Шевченко
19 июня 2024, 18:29
0
Я вижу только одну причину, JS от AjaxForm не подключены
Артур Шевченко
19 июня 2024, 18:28
0
Это код для компонента AjaxFormItLogin