[РЕШЕНО] Простое наличие товара (остаток)
Добрый день!
Подскажите пожалуйста, может кто знает простое решение. Есть товар в единственном экземпляре и есть его наличие. Наличие сделано через плагин. Выводится вот так:
В админке выглядит вот так:
При смене наличия (в админке), кнопка заказа пропадает. Вопрос в том, как сделать чтобы при заказе наличие автоматически менялось на «нет в наличие» для заказанных позиций. Я думаю, что надо написать плагин на событие, но знаний не хватает :( Если есть похожие решения, помогите. Спасибо.
Подскажите пожалуйста, может кто знает простое решение. Есть товар в единственном экземпляре и есть его наличие. Наличие сделано через плагин. Выводится вот так:
[[+availability:is=`1`:then=`<button class="uk-button uk-button-primary" type="submit" name="ms2_action" value="cart/add"><i class="uk-icon-barcode"></i> [[%ms2_frontend_add_to_cart]]</button>`:else=`<button class="uk-button uk-button-primary uk-hidden" type="submit" name="ms2_action" value="cart/add"><i class="uk-icon-barcode"></i> [[%ms2_frontend_add_to_cart]]</button>`]]
В админке выглядит вот так:
При смене наличия (в админке), кнопка заказа пропадает. Вопрос в том, как сделать чтобы при заказе наличие автоматически менялось на «нет в наличие» для заказанных позиций. Я думаю, что надо написать плагин на событие, но знаний не хватает :( Если есть похожие решения, помогите. Спасибо.
Комментарии: 7
Тут в TV содержится инфа о наличии. 1 — да, 0 — нет.
После совершения заказа всем товарам, которые были заказаны — выставится в TV «ostatok» 0
<?php
if( $modx->event->name == 'msOnCreateOrder' )
{
$idsProd = array();
$order = $modx->getOption('msOrder', $scriptProperties);
if (!is_object($order)) {
return;
}
foreach ($order->getMany('Products') as $orderProduct) {
$idsProd[] = $orderProduct->get('product_id');
}
foreach ($idsProd as $idRes) {
$res = $modx->getObject('modResource', $idRes);
$res->setTVValue('ostatok', 0);
$res->save();
}
}
После совершения заказа всем товарам, которые были заказаны — выставится в TV «ostatok» 0
Дмитрий, спасибо огромное за сниппет!
Но что-то не работает. Я создал TV ostatok, в него внес значение «наличие» 1 (числовое). Создал сниппет availability, но при оформлении заказа, количество не меняется. Я может не так вывожу? Подскажите пожалуйста. Спасибо.
Но что-то не работает. Я создал TV ostatok, в него внес значение «наличие» 1 (числовое). Создал сниппет availability, но при оформлении заказа, количество не меняется. Я может не так вывожу? Подскажите пожалуйста. Спасибо.
Все разобрался, это не сниппет, а плагин. Спасибо огромное, все работает!
да, именно) Не за что
Дмитрий, извините и последний вопрос, а с свойством товара (не с TV параметром) подключенным через плагин можно такое же наличие реализовать или это надо править Minishop2? Спасибо.
Попробуйте изменить строчку
на эту:
или
$res->setTVValue('ostatok', 0);
на эту:
$res->set('availability', 0);
или
$res->set('availability', false);
Да, вот это работает:
$res->set('availability', 0);
Огромное Вам спасибо!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.