Скрыть другую доставку (если активна бесплатная доставка), а также скрыть бесплатную доставку, если активна для группы клиентов - PullRequest
0 голосов
/ 28 февраля 2019

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 голосов
/ 28 февраля 2019

У меня не было большого опыта работы с opencart, но AFAIK вам не нужно использовать vqmod для opencart v2.3 или выше.Кроме того, это высокая производительность и непредсказуемость.

Метод index класса ControllerCheckoutShippingMethod [catalog/controller/checkout/shipping_method.php] отвечает за генерацию всех методов доставки и размещение их в сеансе.Opencart позволяет нам разместить событие сразу после вызова этого метода индекса и изменить окончательный вывод.

Создайте модуль с указанным ниже содержимым внутри метода 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));
}
...