MS2 получить ID товара перед добавлением в корзину
Доброго времени суток. Мне нужно ограничить количество товара перед добавлением в корзину Minishop2. Я нашел здесь решение:
if ($modx->event->name = 'msOnBeforeChangeInCart') {
$values = & $modx->event->returnedValues;
if ($values['count'] < 1 ) {
$values['count'] = 1;
}
}
оно работает, но необходимо сделать ограничение только для 1 типа товара. Ииии я уже несколько часов не могу вытащить id чтобы все нормально работало. Есть $product->get('id'), он работает если включить событие msOnBeforeAddToCart, но тогда товар перестает добавляться. Комментарии: 4
В событии msOnBeforeChangeInCart должен быть доступен объект msCartHandler как переменная $cart, у оного есть метод get(), который вернет массив с корзиной. В ней ключи массива — это id товаров.
Смотрите код, не оч понимаю пока что нужно…
github.com/bezumkin/miniShop2/blob/53f541cb4fabe3ad32f9e0608a5abf5d25cd9a4d/core/components/minishop2/model/minishop2/mscarthandler.class.php#L273
Смотрите код, не оч понимаю пока что нужно…
github.com/bezumkin/miniShop2/blob/53f541cb4fabe3ad32f9e0608a5abf5d25cd9a4d/core/components/minishop2/model/minishop2/mscarthandler.class.php#L273
есть товар — цифровая фотография. У него в опциях хранится src — адрес изображения. На данный момент временно сохраняю в артикль при добавлении в корзину. Мне необходимо, чтобы если в корзину пришла цифровая фотография с тем src, который уже есть, она не увеличивалась в количестве. Проверять наверное надо по key. Тот код что я выложил делает то что нужно, но надо добавить проверку, про которую я написал выше.
Только сейчас понял что id товара ведь не подойдет, т.к id цифровой фото всегда одинаковый, отличается только артикль, в котором лежит адрес изображения.
Только сейчас понял что id товара ведь не подойдет, т.к id цифровой фото всегда одинаковый, отличается только артикль, в котором лежит адрес изображения.
Все, получилось! Вот код:
if ($modx->event->name = 'msOnChangeInCart') {
$tmp = $cart->get();
$values = & $modx->event->returnedValues;
if ($values['count'] < 1 && $tmp[$key]['id'] == 107 ) {
$values['count'] = 1;
}
}
Событие msOnChangeInCart гарантирует уникальность, т.к количество меняется только когда товар есть в корзине.
del
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.