Opencart版本2.3.0.2-当前使用Vqmod(下)在激活免费送货后隐藏其他送货。我希望对其进行调整以隐藏特定客户组='2“的免费送货(即批发客户将看不到\被允许免费送货)。
<file path="catalog/model/extension/shipping/*.php">
<operation error="skip">
<search><![CDATA[if ($status) {]]></search>
<add position="before"><![CDATA[
if (get_class($this)!='ModelExtensionShippingFree') {
if (($this->config->get('free_status') == 1) && (float)$this->cart->getTotal() >= $this->config->get('free_total')) {
$status = false;
}
}
]]></add>
答案 0 :(得分:0)
我在opencart上没有很多经验,但是AFAIK对于opencart v2.3或更高版本,您不需要使用vqmod
。另外,它是性能瓶颈,而且难以预测。
类index
[ControllerCheckoutShippingMethod
]的catalog/controller/checkout/shipping_method.php
方法负责生成所有传送方法并将其全部放入会话中。 Opencart允许我们在此索引方法调用之后立即放置一个事件,并修改最终输出。
Create a module,其在install
方法中包含以下内容,以及您想在其中添加的其他内容:
<?php
// admin/controller/extensions/module/mymodule.php
public function install() {
$this->load->model('extension/event');
$this->model_extension_event->addEvent(
'my_custom_module',
'catalog/controller/checkout/shipping_method/after', // add event after shipping_method index call
'extension/module/mymodule/eventAfterSM' // your module file (mymodule.php) with eventAfterSM method in it
);
}
// catalog/controller/extension/module/mymodule.php
public function eventAfterSM() {
// this method will be called right after `ControllerCheckoutShippingMethod`->`index`
// copy and paste the entire index method code in here and modify accordingly
// and finally set the modified data
$this->response->setOutput($this->load->view('checkout/payment_method', $data));
}