Заказать через форму заказать в 1 клик
при оформлении заказа через дополнение OneClick, нужно чтобы плагин проверял: если свойство товара «sod» не ровно нулю, то стоимость товара(каждого) рассчитывало по такой схеме = цена(за единицу) * sod
<?php
switch ($modx->event->name) {
case 'msOnBeforeAddToOrder': case 'msOnAddToOrder':
$orderArray = $order->get();
foreach ($orderArray as &$orderProduct) {
if ($product = $modx->getObject('msProduct', $orderProduct['id'])) { // Получаем объект товара по его ID в корзине
$count = $orderProduct['count'];
if ($count > 0){
if ($product->get('sod') > 0){
$tv = $product->get('price') * $product->get('sod');
}
else { $tv = $product->get('price');}
$pr = $tv;
}
$orderProduct['cost'] = $pr;
}
else{
if ($count > 0){
if ($product->get('sod') > 0){
$tv = $product->get('price') * $product->get('sod');
}
else { $tv = $product->get('price');}
$pr = $tv;
}
$cart->set('cost', $pr);
}
}
$order->set($orderArray);
break;
}
Комментарии: 1
Вот так как то читабельнее
?php
switch ($modx->event->name) {
case 'msOnBeforeAddToCart': case 'msOnAddToCart': case 'msOnChangeInCart': // Обрабатывать только события добавления в корзину и изменения количества
$cartArray = $cart->get(); // Массив корзины
$cartStatus = $cart->status(); // Состояние корзины
foreach ($cartArray as &$cartProduct) { // Обрабатываем все товары корзины
if ($product = $modx->getObject('msProduct', $cartProduct['id'])) { // Получаем объект товара по его ID в корзине
$count = $cartProduct['count'];
if ($count >0 && $product->get('sod')>0){
$tv = $product->get('price') * $product->get('sod');
$pr = $tv;
}
}
else{
if ($count >0 && $product->get('sod')>0){
$tv = $product->get('price') * $product->get('sod');
$pr = $tv;
}
$product->set('price', $pr);
}
}
$cart->set($cartArray); // Запись нового состояния корзины
break;
}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.