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, но тогда товар перестает добавляться.
Кирилл
17 февраля 2017, 19:16
modx.pro
1 889
0

Комментарии: 4

Наумов Алексей
17 февраля 2017, 22:41
0
В событии msOnBeforeChangeInCart должен быть доступен объект msCartHandler как переменная $cart, у оного есть метод get(), который вернет массив с корзиной. В ней ключи массива — это id товаров.

Смотрите код, не оч понимаю пока что нужно…
github.com/bezumkin/miniShop2/blob/53f541cb4fabe3ad32f9e0608a5abf5d25cd9a4d/core/components/minishop2/model/minishop2/mscarthandler.class.php#L273
    Кирилл
    17 февраля 2017, 22:51
    0
    есть товар — цифровая фотография. У него в опциях хранится src — адрес изображения. На данный момент временно сохраняю в артикль при добавлении в корзину. Мне необходимо, чтобы если в корзину пришла цифровая фотография с тем src, который уже есть, она не увеличивалась в количестве. Проверять наверное надо по key. Тот код что я выложил делает то что нужно, но надо добавить проверку, про которую я написал выше.

    Только сейчас понял что id товара ведь не подойдет, т.к id цифровой фото всегда одинаковый, отличается только артикль, в котором лежит адрес изображения.
      Кирилл
      17 февраля 2017, 23:03
      0
      Все, получилось! Вот код:
      if ($modx->event->name = 'msOnChangeInCart') {
          $tmp = $cart->get();
          $values = & $modx->event->returnedValues;
      
          if ($values['count'] < 1 && $tmp[$key]['id'] == 107 ) {
      		$values['count'] = 1;
      	}
      }
      Событие msOnChangeInCart гарантирует уникальность, т.к количество меняется только когда товар есть в корзине.
      Кирилл
      17 февраля 2017, 22:51
      0
      del
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        4