Стоимость доставки в JoomShopping в зависимости от условий

Опробовано на Joomla 3.3 - 3.7.2 и JoomShopping 4.9.2 - 4.16.1

Хак топорный, но рабочий. Плагины я писать не умею, извините.

Хороший человек Голоусов Святослав поделился плагином для решения этой же самой задачи: 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)

После кода

<?php defined( '_JEXEC' ) or die(); ?>

добавляем

<?php /* Hack for delivery */
$cart_data = JSFactory::getModel('cart', 'jshop');
$cart_data->load();
$payment_data_id = $cart_data->getPaymentId();
/* END of delivery hack*/ ?>

а строчку

<?php echo $shipping->name?> (<?php echo formatprice($shipping->calculeprice); ?>)</label>

заменяем на

/*      ?><?php print $shipping->name?> (<?php print formatprice($shipping->calculeprice); ?>)</label> */
      ?>
        <?php /* Delivery hack */
            echo $shipping->name;
            echo $this->payment_method;
            if ( $payment_data_id == 6 ) {
                if ( $cart_data->price_product>2500 ){
                    ?><b><?php echo " : БЕСПЛАТНАЯ ДОСТАВКА по предоплате";?></b><?php
                }else{
                    ?><b><?php echo " : 190 Рублей";?></b><?php }
            }else{
                echo formatprice($shipping->calculeprice);
            } ?></label><?php /* END of delivery hack */ ?>

Примечание: в «$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 */

Готово

  • software/joomshopping/payment-shipping-hack.txt
  • Последнее изменение: 2019/06/29 12:32
  • 127.0.0.1