Сломал голову с total_count
Хочу сделать плагин на событие msOnBeforeAddToCart
Чтобы товар не добавлялся в корзину, если его меньше, чем есть в наличии, чтобы ошибка вылезала
$modx->event->output('Превышен лимит');
Тем самым хочу найти, как вывести total_count, уже перепробовал всякие:
$cart->get('total_count');
$cart['total_count']
$cart->get('total_count');
$status['total_count']
$data['total_count']
Может я и не в ту сторону капаю, но всё же хотелось бы узнать:)
Чтобы товар не добавлялся в корзину, если его меньше, чем есть в наличии, чтобы ошибка вылезала
$modx->event->output('Превышен лимит');
Тем самым хочу найти, как вывести total_count, уже перепробовал всякие:
$cart->get('total_count');
$cart['total_count']
$cart->get('total_count');
$status['total_count']
$data['total_count']
Может я и не в ту сторону капаю, но всё же хотелось бы узнать:)
Комментарии: 27
В любом месте сайта:
$ms2 = $modx->getService('miniShop2');
$ms2->initialize($modx->context->key);
$cart = $ms2->cart->get();
print_r($cart);die;
Выдаёт: «Array ( )»
Значит, корзина пуста.
В итоге выдал Array ( [0d55292a2b58111390fc65496e2ba458] => Array ( [id] => 33 [price] => 1435 [weight] => 0 [count] => 7 [options] => ) )
Мне нужно, чтобы только каунт дал, это тот самый тотал_каунт)
Мне нужно, чтобы только каунт дал, это тот самый тотал_каунт)
И ты, конечно, не можешь сам его посчитать?
Используй
$ms2->cart->status();
Да, спасибо, вот так — получилось!
$ms2 = $modx->getService('miniShop2');
$ms2->initialize($modx->context->key);
$cart = $ms2->cart->status();
print_r($cart['total_count']);
$ms2 = $modx->getService('miniShop2');
$ms2->initialize($modx->context->key);
$cart = $ms2->cart->status();
print_r($cart['total_count']);
Извини, а вот ещё возник вопрос, как получить само имя массива(array) — «0d55292a2b58111390fc65496e2ba458»?
Это не имя, это ключ товара в корзине, с учетом дополнительных свойств.
Поясни конкретнее, что ты от него хочешь, и зачем? Для работы с массивами в php есть много разных функций.
Поясни конкретнее, что ты от него хочешь, и зачем? Для работы с массивами в php есть много разных функций.
$cart = $ms2->cart->get();
$size= $cart['abd8bc953ddc5f1f0dd3f42fcddec25e']['options']['size'];
print_r(array_keys($cart));?
$size= $cart['abd8bc953ddc5f1f0dd3f42fcddec25e']['options']['size'];
print_r(array_keys($cart));?
Мы в шарады играем?
Разбирайся сам, если лень объяснять.
Разбирайся сам, если лень объяснять.
Извини
А вот такой вопрос, как при событии msOnChangeInCart вытащить из продукта значение по полю size?
то есть я вижу, что при событии msOnBeforeAddToCart есть $product и я могу сделать $product->get('size'), а как то же самое сделать в msOnChangeInCart?
А вот такой вопрос, как при событии msOnChangeInCart вытащить из продукта значение по полю size?
то есть я вижу, что при событии msOnBeforeAddToCart есть $product и я могу сделать $product->get('size'), а как то же самое сделать в msOnChangeInCart?
Да, $key я уже использую «во всю», но теперь хочу вытащить из первоначального продукта значение size. Т.е. можно ли как то по ключу вытащить из продукта значение доп. поля?
Тогда:
$ms2 = $modx->getService('miniShop2');
$ms2->initialize($modx->context->key);
$cart = $ms2->cart->get();
$id = $cart[$key]['id'];
if ($product = $modx->getObject('msProductData', $id)) {
$size = $product->get('size');
}
О! Спасибо большое!
Продолжаю ломать голову:)
Делаю plugin на событие «msOnBeforeChangeInCart»:
Делаю plugin на событие «msOnBeforeChangeInCart»:
$ms2 = $modx->getService('miniShop2');
$ms2->initialize($modx->context->key);
$cart = $ms2->cart->get();
$productcount = $cart[$key]['count']; // кол-во товаров этого ключа в корзине
$sizename = $options['size']; // беру имя размера, на который делается заказ
$sizenum = $product->get($options['size']); //беру количество товара из базы по имени размера
/* Если в корзине больше товара, чем есть на скалде то вылезает error */
if ($productcount > $sizenum) {
$modx->event->output('Превышен лимит по наличию');
}
Столкнулся с такой проблемой (проверял по event->output), что если запрашиваю $sizenum, т.е. лезу в $product, то перестаёт работать $key и соответственно не могу взять число купленного именно этого товара. С чем это может быть связано?
Мне стоит ждать ответ?
Нет, не стоит.
т.е. это недоработка движка магазина? и либо ждать обновление, либо строить бронепоезд?
Конечно, если у тебя вдруг перестает работать переменная — то это недоработка движка.
Возможно, даже недоработка самого php — как иначе?
Возможно, даже недоработка самого php — как иначе?
Ехидства полно и в Москве, далеко ходить не надо.
А $product и $key не у мои переменные, а Ваши
А $product и $key не у мои переменные, а Ваши
У меня, не поверишь, всё работает.
Я Вам скинул на почту bezumkin@ya.ru ещё раз описание проблемы и доступ к 24 часовому modx-test.com.
Подскажите, где я был не прав?
Подскажите, где я был не прав?
Иди, проверяй.
При смене количества не передаётся товар, ибо он уже не имеет значения. В корзине может быть несколько одинаковых товаров, но с разынми свойствами, поэтому меняется количество позиции в корзине.
Товар нужно получить, по его id, а ты, пытался использовать несуществующую переменную $product, да еще и не проверял, получается ли товар на самом деле.
При смене количества не передаётся товар, ибо он уже не имеет значения. В корзине может быть несколько одинаковых товаров, но с разынми свойствами, поэтому меняется количество позиции в корзине.
Товар нужно получить, по его id, а ты, пытался использовать несуществующую переменную $product, да еще и не проверял, получается ли товар на самом деле.
Спасибо!
Не подскажете, почему там может не работать $modx->resource->get('id'); в этом же коде.
Просто хочу, чтобы в корзине другая часть плагина работала. Добавляю $thispage = $modx->resource->get('id');, но ничего не выводит :(
Просто хочу, чтобы в корзине другая часть плагина работала. Добавляю $thispage = $modx->resource->get('id');, но ничего не выводит :(
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.