Финансовая поддержка VPS, бесплатные дополнения и docs Донаты оплачивают сервер и двигают бесплатные дополнения MODX и документацию. Поддержать

Всего 126 128 комментариев

Сергей Карпович
Сергей Карпович
Подскажите как показать уведомление только при отправке форм с определенным классом:

Вот так запускаю всплывашку для всех форм, но нужно только для форм с классом form_post
document.addEventListener('si:send:success', (e) => {
    const { action, target, result, headers, Sending } = e.detail;
    Sending.success = (result, target) => {
        Fancybox.close([{ src: "#popup" }]);
        Fancybox.show([{ src: "#success-message", type: "inline" }]);
    }
})
Артур Шевченко
Артур Шевченко
Егор
Егор
спасибо за ответ. На счет «гугления» — я пытаюсь делать на zoomx. Некоторые вещи не смог победить с ним, вроде vendor.name в чанке. Все время выводит единицу. Как только не пробовал. Да и тот же mSearch2, не получилось у меня вывести количество результатов. Гуглил, использовал и total, и totalvar…

Я предполагаю, что если бы многие были чуточку «добрее», не составило бы труда сделать примеры или дать больше информации. Кроме того, зачем я, или кто-нибудь еще будет писать в поддержку автору материала, когда перед глазами будут готовые примеры хотя бы на fenom. Но видимо, им нравится постоянно отвечать, вместо того, чтобы сделать подробную документацию один раз :)
Здоров Александр
Здоров Александр
1. да, использовать для фильтрации и для поиска возможно, будет работать через параметр &parents
2. да, фильтровать по опциям можно — параметр filters, вот пример парочки фильтров
&filters=`ms|price:number,msoption|razmer,tv|fil_top_row
по остальному — смотрите статьи в интернете, одно из лучших умений начинающего программиста — гугление
Егор
Егор
а подскажите, пожалуйста, если установлен mSearch2 (для поиска) ваше решение можно использовать параллельно, только для фильтрации? И еще, не нашел в документации слов про «опции». С опциями товаров будет работать? Или у вас все на TV сделано? Так же, если можно, добавьте пожалуйста несколько скриншотов из настройки компонента в документацию:

нажав жёлтую (или оранжевую или вторую слева в колонке Действия)
Мне не хватает силы своего воображения, чтобы представить это. Растерялся :_(

Теперь добавим блок для показа метаинформации: количество результатов, выбранные фильтры, время фильтрации.
А можно простецкий пример на fenom? Сэкономит время.
cronAbs
cronAbs
Вы можете не использовать MinifyX для некоторых компонентов, например ms2. Для этого надо унаследовать класс miniShop2 вместе с методом initialize(), и там где вызывается regClientScript() указать скрипт статично, далее обвернуть его каким-нибудь условием, например для определённых страниц или шаблонов, чтобы не боятся за то, что при обновлении что-то затрётся.

// Пример версионности статичного файла.
public function initialize($ctx = 'web', $scriptProperties = array())
{
    ...
        // Register JS
        $js = trim($this->modx->getOption('ms2_frontend_js'));
        if (!empty($js) && preg_match('/\.js/i', $js)) {
            $jsFile = 'assets/components/minishop2/js/web/minishop.js';
            $jsFileSize = filesize($_SERVER['DOCUMENT_ROOT'].'/'.$jsFile);
            $this->modx->regClientScript($jsFile.'?v='.$jsFileSize);
            ...
        }
    ...
}
miniShop2Config, а также можно обвернуть в условие. Или как в
примере выше добавить конфиги.

По поводу
и продолжает сохранять файлы в /assets/minifyx/ хотя указано /assets/cache/
Тут лучше дождаться ответа разработчика, так как путь assets/components/minifyx/cache обычно идёт по умолчанию, возможно погрешность с вашей стороны или установлен кэш. Логируйте ошибки в журнал и смотрите, что там не так. Да, и ещё указывать из /assets/cache/ нельзя, так как это временная папка, которая очищается.
Ivan K.
Ivan K.
<?php

switch ($modx->event->name) {
    case 'msOnAddToCart':
        // Проверка на контекст
        if ($modx->context->key !== 'web') {
            // Получаем текущие товары в корзине
            $tmp = $cart->get();

            // Получаем id добавленного продукта
            foreach ($tmp as $key => $item) {
                $productId = $item['id'];
                $product = $modx->getObject('msProduct', $productId);
                if ($product) {
                    // Получаем цену для монобренда "my_price_mono"
                    $newPrice = $product->get('my_price_mono');

                    // Проверяем, что цена задана и больше нуля
                    if (!empty($newPrice) && $newPrice > 0) {
                    // Устанавливаем новую цену
                        $tmp[$key]['price'] = $newPrice;
                    } else {
                        // Логгирование ошибки для пустой или некорректной цены
                        $modx->log(modX::LOG_LEVEL_ERROR, 'Invalid or empty my_price_mono for product ID ' . $product->get('id'));
                    }
                }
            }

            // Сохраняем измененную корзину
            $cart->set($tmp);
        }
        break;
}
Ivan K.
Ivan K.
Видимо не дорос я до ваших компонентов))

Не работает у меня мой самописный плагин, который реагирует на событие msOnAddToCart и берет цену из другого поля, не price, в зависимости от контекста. С обычной корзиной, работает, кстати.
Алексей
Алексей
Добрый день. Подскажите пожалуйста как это изменить, настройку не могу найти.

Заказу автоматически ставится «Статус Отменен ID 4» при неуспешной попытке оплаты на эквайринге на сайте тинкофф там где карту вводят.

(неуспешная попытка оплаты — это если не получилось картой оплатить, может при вводе смс-кода клиент ошибся или банковский антифрод не дал оплатить )

Как можно настроить…? Чтобы зря заказу статус отменён не ставился. Это ж и емайл клиенту приходит зря. И у меня на этот статус Отменён Id 4 привязано действие другого компонента Онлайн кассы, он чек возврата автоматически делает.

mspTinkoff 1.0.13-beta Установлено 2023-04-25, 3:38 pm
Год и 2 месяца поздно в тех )
Сергей Карпович
Сергей Карпович