用于运输方式的氧化网店挂钩

Oxid eshop hooks for shipping method

我正在开发 Oxid eshop 自定义运输模块。 我想即时更改运输方式的价格。 有什么办法可以让我得到任何挂钩或方法,所以可以中断选择运输方式吗? 我也知道了 对于 运行 服务器端 php 代码,您需要扩展 OXID 的功能,例如您要跟踪的页面的 render() 函数。对于产品页面,它将是 "details" -> applications/controllers/details。php 类别页面是 "alist.php",购物篮是 basket.php

oxBasket->_calcDeliveryCost() 似乎是您正在寻找的功能,它根据配置的交付集计算交付成本。 https://github.com/OXID-eSales/oxideshop_ce/blob/b-5.3-ce/source/application/models/oxbasket.php#L903-L948

此函数由此处的 calculateBasket() 调用: https://github.com/OXID-eSales/oxideshop_ce/blob/b-5.3-ce/source/application/models/oxbasket.php#L1487 这也称为,当您更改运输方式时

您需要一个 oxbasket 模块。在元数据中:

'extend'       => array(
    'oxbasket' => 'youmodule/application/models/oxbasket_delivery'
)

并在模块中:

class oxbasket_delivery extends oxbasket_delivery_parent
{


    public function calculateBasket($blForceUpdate = false)
    {
        parent::calculateBasket($blForceUpdate);
        /** @var oxPrice $deliveryCost */
        $dnewDeliveryPrice = 10; // or whatever you need
        $deliveryCost = oxNew('oxprice');
        $deliveryCost->setPrice($dnewDeliveryPrice);
        $this->setCost('oxdelivery', $deliveryCost);
    }
}