====== Стоимость доставки в JoomShopping в зависимости от условий ======
Опробовано на Joomla 3.3 - 3.7.2 и JoomShopping 4.9.2 - 4.16.1
Хак топорный, но рабочий. Плагины я писать не умею, извините.
===== Плагин от Голоусова Святослава =====
Хороший человек Голоусов Святослав поделился плагином для решения этой же самой задачи: {{ :software:joomshopping:plg_joomshopping_shipping_policy.zip |}}
===== Задача =====
Есть два метода оплаты: 1 (предоплата) и 2 (наложенный платеж). Стоимость доставки должна определяться следующим образом:
* Если выбран метод оплаты 1(предоплата) и сумма покупки больше 2500 р. - доставка бесплатная
* Если выбран метод оплаты 1(предоплата) и сумма покупки меньше 2500 р. - стоимость доставки 200 руб
* Во всех остальных случаях сумма за доставку рассчитывается обычным методом
===== Решение =====
==== Изменение отображения суммы при оформлении заказа ====
Редактируем файл /components/com_jshopping/templates/имя_шаблона/checkout/shippings.php (или в папке имя_шаблона/html/com_jshopping/checkout/shippings.php)
После кода
добавляем
load();
$payment_data_id = $cart_data->getPaymentId();
/* END of delivery hack*/ ?>
а строчку
name?> (calculeprice); ?>)
заменяем на
/* ?>name?> (calculeprice); ?>) */
?>
name;
echo $this->payment_method;
if ( $payment_data_id == 6 ) {
if ( $cart_data->price_product>2500 ){
?>calculeprice);
} ?>
Примечание: в "$payment_data_id==6" цифра "6" это ID моего метода оплаты "Предоплата", посмотреть его можно на страничке http://you-site.ru/administrator/index.php?option=com_jshopping&controller=payments
==== Изменение суммы доставки ====
Редактируем файл components/com_jshopping/controllers/checkout.php - изменяем function step4save()
Между
if (!$checkout->saveShippingData($sh_pr_method_id, $allparams, $adv_user)){
JError::raiseWarning('', $checkout->getError());
$this->setRedirect($checkoutStep->getCheckoutUrl('4'));
return 0;
}
$sh_method = $checkout->getActiveShippingMethod();
$shipping_method_price = $checkout->getActiveShippingMethodPrice();
и
$dispatcher->trigger('onAfterSaveCheckoutStep4', array(&$adv_user, &$sh_method, &$shipping_method_price, &$cart));
$next_step = $checkoutStep->getNextStep(4);
добавляем строки:
/* Hack for shipping/delivery */
$payment_data_id = $cart->getPaymentId();
if ( $payment_data_id == 6 ) {
if ( $cart->price_product > 2500 ){
$cart->setShippingPrice(0);
}else{
$cart->setShippingPrice(190);
}
}
/* end of hack for delivery */
Готово
{{tag>joomla joomshopping payment shipping оплата доставка}}