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

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

С нами с 10 февраля 2015; Место в рейтинге пользователей: #42
Сергей Фещуков
07 ноября 2019, 14:43
0
К сожалению, так не могу сказать. Необходимо смотреть что возвращает ajax-запрос, журнал ошибок и заниматься поимкой ошибки.
Сергей Фещуков
05 ноября 2019, 17:47
0
Именно. А для чего тогда ваша функция?
Сергей Фещуков
05 ноября 2019, 17:36
0
Для msearch2 в компоненте поставляется класс для фильтрации товара по наличию.
Сергей Фещуков
15 октября 2019, 11:21
0
Попробуйте добавить в вызов сниппета аргумент loadModels=`cityfields`
Сергей Фещуков
06 сентября 2019, 07:50
0
Для обновления корзины — нет. Используется стандартный класс
Сергей Фещуков
05 сентября 2019, 15:05
0
Вот такой кусок кода нашёл. Надеюсь поможет.
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.
Сергей Фещуков
10 июля 2019, 06:30
+1
В вызов mFilter2 необходимо добавить
'loadModels' => 'msproductremains'
Тогда будет искать после загрузки
Сергей Фещуков
20 июня 2019, 06:55
0
Попробуйте вот так:
[[!msProducts?
  &leftJoin=`{"Remains":{"class":"msprRemains","on":"msProduct.id = Remains.product_id AND Remains.remains > 0"}}`
  &groupby=`msProduct.id`
  &select=`{"msProduct":"*","Remains":"IF (Remains.remains > 0, 1, 0) as remains"}`
  &sortby=`Remains.remains`
  &sortdir=`DESC`
]]
Сергей Фещуков
11 декабря 2018, 11:23
0
Добрый день. Поле не являются полем msProduct, поэтому так не получится. Вы можете не связывать источник с каким-либо полем, в компоненте в плагин встроена процедура, которая ищет поле источника, по умолчанию, поле «Количество», и, если находит, обновляет остаток товара. В системных настройках компонента можно изменить поле источника.
Сергей Фещуков
11 октября 2018, 08:05
0
Оберните фразу с наличием в тег div с классом mspr-remains. И должен быть подключен стандартный JS-файл компонента (по умолчанию, он включен). Подробнее об этом здесь.
[[!getRemains:toPlaceholder=`remains` ?&id=`[[*id]]`]]
<div class="mspr-remains">[[!+remains=`0`:then=`[[%mspr_text_more]]`:else=`[[%mspr_text_zero]]`]]</div>
Лучше использовать словари, потому как после запроса берутся фразы из словаря. Если у вас вместо слова появляется цифра с остатком, то необходимо включить опцию «Скрывать количество остатков» в настройках компонента.
Сергей Фещуков
02 октября 2018, 15:17
0
Я не смог воспроизвести ошибку, к сожалению. Пробовал и обновить, и переустановить. Но всегда всё нормально открывается.
Сергей Фещуков
28 сентября 2018, 21:11
0
В вызов mFilter2 необходимо добавить параметр:
'loadModels' => 'msproductremains'
Тогда фильтрация будет работать корректно.
Сергей Фещуков
28 сентября 2018, 21:05
+1
Здесь иная ситуация, вам необходимо в запросе добавить таблицу с остатками и проверять остатки
$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'));
Но и первый вариант тоже должен корректно работать. В общем, пробуйте. Должно работать.
Сергей Фещуков
28 августа 2018, 06:25
0
На данный момент, к сожалению, такой функционал ещё не реализован
Сергей Фещуков
15 июня 2018, 17:41
0
А по какой причине нету поддержки msimportexport? Это надо их разработчика напрягать или здешнего?
К сожалению, это не от меня и моего компонента зависит.

И подскажите, как мне удобнее организовать работу с остатками, если у меня у товара нету опций как таковых (размер, цвет).
Из настроек компонента удалить все поля, по которым ведутся остатки (то есть оставить значение настройки пустым). И даже если этого не сделать, без всяких опций всё равно должны появится одна строка с нужным числом в таблице. Я постарался ясно изложить как пользоваться компонентом в документации.

Если у вас появились какие-то проблемы с компонентом, пишите в техподдержку компонента в магазине modStore.pro. Я решу все проблемы с компонентом
Сергей Фещуков
22 декабря 2017, 09:24
0
К сожалению, в актуальной версии компонента данной функции нет. Необходимо перерабатывать вывод на фронт, то есть переписывать чанки. стили и js-код.
Сергей Фещуков
23 октября 2017, 13:30
0
1. Компонент принимает только AJAX-запросы для смены города с параметрами:
cityfields_action = city/select
city = 1
Через ссылку работает только при включенной опции «Город в домене» и, соответственно, надо отправлять на соответствующий домен.

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

3. Авто определение идёт по IP, находится город в базе SxGeo, затем берётся название города из их базы и ищется в БД сайта город по названию.
Сергей Фещуков
10 октября 2017, 20:27
0
site.ru удаляется по Московскому региону, вместо него добавляется moskva.site.ru, верно? А в других регионах вашего присутствия какие домены в поиске Яндекса?
Сергей Фещуков
10 октября 2017, 20:26
0
Сниппет [[!geoCity]] не относится к компоненту cityFields. Или это вами написанный сниппет? Редирект осуществляется в классе cityFields при первоначальном определении города.

У вас город по-умолчанию отличается от Москвы?
Сергей Фещуков
10 октября 2017, 20:18
+1
Из документации:
The scheme indicates in what format the URL is generated.
-1: (default value) URL is relative to site_url
0: see http
1: see https
full: URL is absolute, prepended with site_url from config
abs: URL is absolute, prepended with base_url from config
http: URL is absolute, forced to http scheme
https: URL is absolute, forced to https scheme
То есть -1 означает, что все ссылки в плейсхолдере [[+url]] будут относительными, то есть, без адреса сайта.
В данном варианте все страницы должны попасть в карту сайта, в том числе товары.html.