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

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

Был в сети 11 августа 2026, 07:34
Заказы не принимаю
Отправить деньги
Добрый день. Отключить возможность проверки остатков перед добавлением товара в корзину и перед оформлением заказа (изменением статуса заказа) можно отключить в настройках компонента. Но при этом в магазине не будет появляться надпись «под заказ», это надо будет вам самим доработать, с помощью плагина.
В minishop2 версии 2.4.10-pl добавили нужные события, чтобы заработала эта функция. github.com/bezumkin/miniShop2/commit/000be7961edd6b04469edf262cb0cbb0bc4c9934
Возможно, автоматически у вас плагин не активируется в нужных событиях.
Нужно установить галочку на срабатывание плагина компонента на события:
msOnBeforeCreateOrderProduct
msOnCreateOrderProduct,
msOnBeforeUpdateOrderProduct,
msOnUpdateOrderProduct,
msOnBeforeRemoveOrderProduct,
msOnRemoveOrderProduct
И всё должно заработать.
Импорт/экспорт цен каким-либо способом не предусмотрено из коробки.
Старая цена работает так: если для города установлена цена, отличная от цены по умолчанию, то в плейсхолдер old_price запишется цена по умолчанию, а в плейсхолдер price — цена для города.
Тогда перед этим делом добавьте вот такое:
$modx->loadClass('msprRemains', MODX_CORE_PATH.'/components/msproductremains/model/msproductremains/');
Или вот так:
$modx->loadClass('msprRemains', MODX_CORE_PATH.'/components/msproductremains/model/');
Или просто подключите сервис. Он подтянет все нужные классы за собой.
$msProductRemains = $modx->getService('msProductRemains');
Добрый день. Можно просто вызвать сниппет getRemains из вашего сниппета.
$remains = $modx->runSnippet('getRemains', array(
	'product_id' => 123,
	'color' => 'Красный',
	'size' => 'Большой'
));
К тому же, сниппет с недавних пор выдаёт все остатки товара в виде JSON массива. Для этого вызвать надо сниппет так:
$remains = $modx->runSnippet('getRemains', array(
	'product_id' => 123,
	'return' => 'json'
));
$remains = $modx->fromJSON($remains);
В итоге получаем массив в виде:
$remains = array (
  0 => array (
    'options' => 
    array (
      'color' => 'Красный',
      'size' => 'Малый',
    ),
    'remains' => 6,
  ),
  1 => array (
    'options' => 
    array (
      'color' => 'Синий',
      'size' => 'Большой',
    ),
    'remains' => 9,
  )
)
И далее ищите в массиве нужные данные.
Есть ещё вариант подключить компонент как сервис и использовать функцию getRemains, но она не возвращает JSON-массив.
$msProductRemains = $modx->getService('msProductRemains');
$remains = $msProductRemains->getRemains(array(
	'product_id' => 123,
	'color' => 'Красный',
	'size' => 'Большой'
));
Надеюсь, я вам помог. Желаю удачи!
Добрый день. Ранее была поддержка моего компонента msProductRemains для импорта остатков. Сейчас её нет. Я понимаю, что у вас может и не быть желания поддерживать мой компонент. Но у меня есть желания добавить поддержку моих компонентов в ваш компонент для импорта. Может вы сделаете механизм для подключения своих классов импорта?
То есть я хочу, чтобы мои остатки тоже можно было импортировать. Я пишу класс для импорта, подсовываю его в папку компонента msImportExport, он автоматически подключается вашим компонентом и в списке импорта появляется новый пункт.
Надеюсь, идею вы поняли.
Добрый день.
1. Компонент не работает с контекстами. Оно создано специально для того, чтобы не создавать контексты для разных городов. Дописать этот функционал возможно, в принципе, или переписать под ваши нужды его.
2. Придётся переписать тип ТВ или создать новый, чтобы поддерживал компонент. В общем, без правки такой функции не будет, но вообще реализовать можно.
3. Опять же вопрос к автодополнениям, поддержку городов придётся дописывать.