====== Стоимость доставки в 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 оплата доставка}}