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

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

Был в сети 11 августа 2026, 07:34
Заказы не принимаю
Отправить деньги
Можно использовать сниппет
[[!msOptionsWithRemains?&id=`[[+id]]`&name=`size`]]
Такой вариант вызова сниппета выведет все размеры товара, которые есть в наличии (то есть скроет все размеры, которые не в наличии).

А есть ещё такой вариант обработки этой ситуации.
Вызываем сниппет так:
[[!msOptionsWithRemains?&id=`[[+id]]`&name=`size`&showMissing=`1`]]
И в чанке tpl.msOptions.row выводим параметр таким образом:
<option value="[[+value]]" [[+selected]] [[+remains:lte=`0`:then=`disabled="disabled"`]]>[[+value]]</option>
Тогда сниппет выведет все размеры, но размеры не в наличии будут неактивными (выбрать их нельзя будет, но они будут видны).
К сожалению, скорее всего всё сложнее. Придётся добавлять поле properties как оно есть, то есть делать следующим образом.
В строке импорта пишем:
&fields=article,size,size,size,properties
а в CSV файле в строке пишем:
артикул 1;Размер 1;Размер 2;Размер 3;{"msproductremains":{"Размер 1":"49","Размер 2":"55","Размер 3":"12"}}

Визуально, все остатки обнулятся, придётся их заполнять заново. Поле указывается общее для всех товаров. По факту, в базе ничего не перезапишется (то есть останутся данные остатков по размерам), пока не будет пересохранён каждый товар с данными остатков по вкусам.
Вид поля properties с остатками такой
{"msproductremains":{"Размер 1":"49","Размер 2":"55","Размер 3":"12"}}
Это пример для размеров. Соответственно, должны быть в свойствах Размеры указаны Размер 1, Размер 2 и Размер 3.
1. Информация об остатках хранится в стандартном поле properties. Поэтому это поле добавлять надо. Только надо отметить, что в этом поле могут быть и другие параметры. Пример как выглядит значение этого поля дам чуть позже, пока не за компьютером.
2. Я с удовольствием добавлю, только знать бы как это сделать.
Попытаться вывести Cmp_name.config.connector_url в первую очередь в консоль.
console.log(Cmp_name.config.connector_url)
Можно в саму консоль отправить эту команду или просто написать в консоли
Cmp_name.config.connector_url
То, что в PHP задан $connectorUrl ещё не значит, что он на странице в JS определён.
Я когда-то делал кнопку «Купить в один клик» и пошёл на такую хитрость, чтобы очистить корзину. Добавил скрытую форму с кнопкой очистить корзину, а в файле JS прописал:
$('form button[value="cart/buy"]').unbind('click').bind('click', function() {
	$('form button[value="cart/clean"]').click();
	return false;
});
miniShop2.Callbacks.Cart.clean.response.success = function () {
	$('form button[value="cart/add"]').click();
	location.href = "order.html";
	return false;
}
Только потом пришлось переопределить функцию miniShop2.Cart.status, переписав её так, чтобы не происходила перезагрузка страницы после очистки корзины.
А зачем value удалили? Я же думал вы проверите, что value срабатывает (то есть ваше значение по-умолчанию вставляется). :)

И ещё вариант. Попробуйте так:
{xtype: 'hidden',name: 'pattern_id',defaultValue: '1234567'}
или
{name: 'pattern_id',value: '1234567',hidden: true}
или
{name: 'pattern_id',defaultValue: '1234567',hidden: true}
Если я правильно понимаю код, вы просто добавляете скрытое поле в форму.
<input type="hidden" name="pattern_id" value="1234567" />
И через форму это значение передаётся. Вот и надо проверить, имеется ли данное скрытое поле в форме и имеется ли значение в нужное поле. Либо через инструменты разработчика браузера, либо задав xtype=«textfield».