Сергей Фещуков

Сергей Фещуков

Был в сети 11 августа 2026, 07:34
Заказы не принимаю
Отправить деньги
Необходимо рассматривать функцию определения города внутри класса cityFields и сам плагин. Перенаправление в двух местах прописано. ?city=3 указывается для выбора города и должно сработать перенаправление на domen.ru/ufa/ после этого. Могли бы мне написать на почту или в поддержку компонента на modstore? Мы бы могли подробнее разобрать ситуацию.
Здравствуйте. Я немного не понял вопроса. Компонент не работает с подпапками. Если только вам его не доработали. У вас ссылки всегда направляют на главный домен? Тогда следует поменять в теге base значение href на
[[!+cf.current_city.url]]
То есть у вас должно получится следующее:
<base href="[[!+cf.current_city.url]]" />
Вот такой кусок кода нашёл. Надеюсь поможет.
miniShop2.Cart.status =  function (status) {
            if (status['total_count'] < 1) {
                CloseWindow();
                $('#msCartSide').remove();
            } else {
                var $cart = $(miniShop2.Cart.cart);
                var $miniCart = $(miniShop2.Cart.miniCart);
                if (status['total_count'] > 0 && !$miniCart.hasClass(miniShop2.Cart.miniCartNotEmptyClass)) {
                    $miniCart.addClass(miniShop2.Cart.miniCartNotEmptyClass);
                }
                $(miniShop2.Cart.totalWeight).text(miniShop2.Utils.formatWeight(status['total_weight']));
                $(miniShop2.Cart.totalCount).text(status['total_count']);
                $(miniShop2.Cart.totalCost).text(miniShop2.Utils.formatPrice(status['total_cost']));
                if ($(miniShop2.Order.orderCost, miniShop2.Order.order).length) {
                    miniShop2.Order.getcost();
                }
                $.ajax({
                        url: 'cart.html',
                        data: {ajax: true, miniCart: true},
                        success: function(redata) {
                            $('#msCartSide').remove();
                            $('.content').append(redata);
                            ajaxLinks();
                        }
                    });
            }
        }
На странице cart.html размещен только сниппет msCart.
Добрый день. Поле не являются полем msProduct, поэтому так не получится. Вы можете не связывать источник с каким-либо полем, в компоненте в плагин встроена процедура, которая ищет поле источника, по умолчанию, поле «Количество», и, если находит, обновляет остаток товара. В системных настройках компонента можно изменить поле источника.
Оберните фразу с наличием в тег div с классом mspr-remains. И должен быть подключен стандартный JS-файл компонента (по умолчанию, он включен). Подробнее об этом здесь.
[[!getRemains:toPlaceholder=`remains` ?&id=`[[*id]]`]]
<div class="mspr-remains">[[!+remains=`0`:then=`[[%mspr_text_more]]`:else=`[[%mspr_text_zero]]`]]</div>
Лучше использовать словари, потому как после запроса берутся фразы из словаря. Если у вас вместо слова появляется цифра с остатком, то необходимо включить опцию «Скрывать количество остатков» в настройках компонента.
Здесь иная ситуация, вам необходимо в запросе добавить таблицу с остатками и проверять остатки
$q->leftJoin('msprRemains', 'Remains', ['modResource.id = Remains.product_id', 'Remains.remains > 0']);
$q->select(['SUM(Remains.remains) as remains']);
А вместо
'iu_count:>' => 0,
пишем
'Remains.remains:>' => 0,
Данный случай присоединения таблицы откидывает опции (а в вашем случае они не нужны) и записи с остатками меньше 0. И в remains записывается суммарный остаток товара по всем опциям.
В вашем случае на один товар должна быть одна запись с остатками, поэтому можно было просто обойтись более простым присоединением таблицы:
$q->leftJoin('msprRemains', 'Remains', ['modResource.id = Remains.product_id']);
$q->select($this->modx->getSelectColumns('msprRemains', 'Remains'));
Но и первый вариант тоже должен корректно работать. В общем, пробуйте. Должно работать.
1. Компонент принимает только AJAX-запросы для смены города с параметрами:
cityfields_action = city/select
city = 1
Через ссылку работает только при включенной опции «Город в домене» и, соответственно, надо отправлять на соответствующий домен.

2. Надо подключить класс cfField и искать плейсхолдер
[pre]123_price[/pre]
где 123 — это ID товара. И где, например, цены для города нет, то не выводим его.

3. Авто определение идёт по IP, находится город в базе SxGeo, затем берётся название города из их базы и ищется в БД сайта город по названию.