Skip to content

Instantly share code, notes, and snippets.

@OlegShchavelev
Last active December 22, 2020 00:57
Show Gist options
  • Save OlegShchavelev/5e76490072092e9416aa248a89e38a1b to your computer and use it in GitHub Desktop.
Save OlegShchavelev/5e76490072092e9416aa248a89e38a1b to your computer and use it in GitHub Desktop.
Стоимость доставки отдельной строкой в Minishop2 (после </body>)
<script>
miniShop2.Order.deliveryCost = '#ms2_delivery_cost';
miniShop2.Callbacks.Order.getcost.response.success = function(response) {
var rdc = response.data['delivery_cost'];
if(rdc) $(miniShop2.Order.deliveryCost, miniShop2.Order.order).text(miniShop2.Utils.formatPrice(rdc));
else $(miniShop2.Order.deliveryCost, miniShop2.Order.order).text('0');
}
miniShop2.Callbacks.Order.getcost.response.error = function(response) {
var cost = response.data['cost'];
$(miniShop2.Order.orderCost).text(miniShop2.Utils.formatPrice(cost));
$(miniShop2.Order.deliveryCost, miniShop2.Order.order).text('0');
}
miniShop2.Callbacks.Order.add.response.success = function(response) {
miniShop2.Order.getcost();
}
</script>
<span id="deliveryprice">Стоимость доставки: <span id="ms2_delivery_cost"></span> руб.</span>
<?php
if(!class_exists('msOrderInterface')) {
require_once dirname(dirname(dirname(__FILE__))) . '/model/minishop2/msorderhandler.class.php';
}
class detaliOrderHandler extends msOrderHandler implements msOrderInterface {
public function getCost($with_cart = true, $only_cost = false)
{
$response = $this->ms2->invokeEvent('msOnBeforeGetOrderCost', array(
'order' => $this,
'cart' => $this->ms2->cart,
'with_cart' => $with_cart,
'only_cost' => $only_cost,
));
if (!$response['success']) {
return $this->error($response['message']);
}
$cart = $this->ms2->cart->status();
$cost = $with_cart
? $cart['total_cost']
: 0;
/** @var msDelivery $delivery */
if (!empty($this->order['delivery']) && $delivery = $this->modx->getObject('msDelivery',
$this->order['delivery'])
) {
$cost = $delivery->getCost($this, $cost);
$deliveryCost = $delivery->getCost($this, 0);//Добавил переменную где получаем price доставки
}
/** @var msPayment $payment */
if (!empty($this->order['payment']) && $payment = $this->modx->getObject('msPayment',
$this->order['payment'])
) {
$cost = $payment->getCost($this, $cost);
}
$response = $this->ms2->invokeEvent('msOnGetOrderCost', array(
'order' => $this,
'cart' => $this->ms2->cart,
'with_cart' => $with_cart,
'only_cost' => $only_cost,
'cost' => $cost,
));
if (!$response['success']) {
return $this->error($response['message']);
}
$cost = $response['data']['cost'];
return $only_cost
? $cost
: $this->success('', array('cost' => $cost, 'delivery_cost'=>$deliveryCost));
}
}
@rgbplus
Copy link

rgbplus commented Oct 11, 2018

Дайте код, что бы правильно зарегистрировать класс?

@frogggggi
Copy link

Дайте код, что бы правильно зарегистрировать класс?
Выполни в Console и в "Системные настройки & События" ключу ms2_order_handler_class укажи значение detaliOrderHandler
<?php if ($miniShop2 = $modx->getService('miniShop2')) { $miniShop2->addService('order', 'detaliOrderHandler', '{core_path}components/minishop2/custom/order/mscustomorderhandler.class.php' ); }
После чего в чанке tpl.msOrder можешь выводить переменную
<span id="deliveryprice">Стоимость доставки: <span id="ms2_delivery_cost"></span> руб.</span>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment