隐藏其他送货(如果启用了免费送货),并且还隐藏免费的送货(如果针对某个客户组有效)

时间:2019-02-28 00:03:43

标签: opencart opencart2.3 vqmod

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>

1 个答案:

答案 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));
}