Всего 123 803 комментария

Наумов Алексей
01 июля 2024, 09:38
0
Да без проблем!

Сделайте некий сайт, назовите его api.ДОМЕН.ru, залейте туда базу данных своих авто и любой значит скрипт туда добавьте, чтобы он мог в json вывести данные по машинам, например:
/cars — список авто
/cars/123 — информация по машине с id 123
и т.д.

а на основных сайтах получайте данные уже… а чтобы это хорошо и быстро работало — данные в кеш modx сохраняйте, на сутки там к примеру. В этом случае не будет постоянных запросов к api, сайты будут работать быстро.
Ivan
01 июля 2024, 01:43
0
if (target.classList.contains('form_post')) {...}
Сергей Карпович
30 июня 2024, 10:06
0
Подскажите как показать уведомление только при отправке форм с определенным классом:

Вот так запускаю всплывашку для всех форм, но нужно только для форм с классом 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" }]);
    }
})
Николай Савин
29 июня 2024, 22:45
0
Насколько я знаю Илья не планирует поддерживать компонент. Он бы с удовольствием передал его приемнику для развития, но таковых не нашлось (если я не ошибаюсь)
vit
vit
29 июня 2024, 21:30
0
Мне кажется самое оптимальное это все сайты объединить в одну админку и не делать кучу лишних движений.
Алексей
29 июня 2024, 15:05
0
Надеюсь ГрандМастер вернёт Сдэк, никто не пишет, просто все понимают надо ждать.
Артур Шевченко
29 июня 2024, 11:29
+1
ваше решение можно использовать параллельно
Можно

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

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

А можно простецкий пример на fenom?
Читайте документацию
Егор
28 июня 2024, 09:42
0
спасибо за ответ. На счет «гугления» — я пытаюсь делать на zoomx. Некоторые вещи не смог победить с ним, вроде vendor.name в чанке. Все время выводит единицу. Как только не пробовал. Да и тот же mSearch2, не получилось у меня вывести количество результатов. Гуглил, использовал и total, и totalvar…

Я предполагаю, что если бы многие были чуточку «добрее», не составило бы труда сделать примеры или дать больше информации. Кроме того, зачем я, или кто-нибудь еще будет писать в поддержку автору материала, когда перед глазами будут готовые примеры хотя бы на fenom. Но видимо, им нравится постоянно отвечать, вместо того, чтобы сделать подробную документацию один раз :)
Здоров Александр
28 июня 2024, 09:41
+1
я извиняюсь, не глянул что ветка про другой компонент совсем, весь ответ про стандартный mfilter

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

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

Теперь добавим блок для показа метаинформации: количество результатов, выбранные фильтры, время фильтрации.
А можно простецкий пример на fenom? Сэкономит время.
Кровельный
27 июня 2024, 18:41
0
Вы можете не использовать 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/ нельзя, так как это временная папка, которая очищается.
Максим
27 июня 2024, 12:28
0
Проверьте существует ли эта папка (/assets/cache/).
Проверьте путь на опечатки.
Проверьте права на запись у этой папки (может ли пользователь, из-под которого запускается php, записывать в неё).
Ivan K.
27 июня 2024, 09:13
0
<?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.
27 июня 2024, 01:48
0
Видимо не дорос я до ваших компонентов))

Не работает у меня мой самописный плагин, который реагирует на событие msOnAddToCart и берет цену из другого поля, не price, в зависимости от контекста. С обычной корзиной, работает, кстати.
Володя
26 июня 2024, 14:53
0
Добрый.
Можно создать настройку ms2_payment_tinkoff_status_cancel и указать там несуществующий статус, но не 0. Должно сработать.
Вячеслав Варов
26 июня 2024, 14:38
0
Почему-то сниппет игнорирует указанные в настройках лиректориии и продолжает сохранять файлы в /assets/minifyx/ хотя указано /assets/cache/