19 May 2020 в 12:02 PM
 11 мин. на чтение

Учусь делать копию модуля в opencart 3

Учусь делать копию модуля в opencart 3



Было время, когда у меня был собственный интернет магазин и все задачи по доработкам я отдавал программистам, а сам просто контролировал исполнение и тестировал работоспособность той или иной доработки. Теперь, уже после передачи ИМ, у нового владельца появились доработки, которые надо реализовать и вот - понадобилось сделать копию модуля метода оплаты для разных регионов

То есть задача - сделать копию модуля Оплаты при доставке, с такими же функциями как у оригинала.

Для начала через поиск по содержимому найдём название этого модуля - через языковые файлы:

В результате видно название самого модуля

далее ищем все файлы модуля

Вот все файлы -

Доступным вам способом (через панель isp или скриптом через командную строку) создаём в этой структуре копию каждого файла - в моём случае это будет /payment/cod2.php

После дубляжа - надо зайти в каждый файл и поменять всё что обращается к cod - на cod2 Вот пример файла /catalog/model/extension/payment/cod2.php

<?php
class ModelExtensionPaymentCOD2 extends Model {
public function getMethod($address, $total) {
$this->load->language('extension/payment/cod2');
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "zone_to_geo_zone WHERE geo_zone_id = '" . (int)$this->config->get('payment_cod2_geo_zone_id') . "' AND country_id = '" . (int)$address['country_id'] . "' AND (zone_id = '" . (int)$address['zone_id'] . "' OR zone_id = '0')");
if ($this->config->get('payment_cod2_total') > 0 && $this->config->get('payment_cod2_total') > $total) {
$status = false;
} elseif (!$this->cart->hasShipping()) {
$status = false;
} elseif (!$this->config->get('payment_cod2_geo_zone_id')) {
$status = true;
} elseif ($query->num_rows) {
$status = true;
} else {
$status = false;
}
$method_data = array();
if ($status) {
$method_data = array(
'code'    => 'cod2',
'title'   => $this->language->get('text_title'),
'terms'   => '',
'sort_order' => $this->config->get('payment_cod2_sort_order')
);
}
return $method_data;
}
}

после изменения файлов - записываем в БД текущие параметры нового модуля оплаты

Вот данные, которые надо вставить в таблицу settings

(0, 'payment_cod2', 'payment_cod2_sort_order', '5', 0),

(0, 'payment_cod2', 'payment_cod2_total', '0.01', 0),

(0, 'payment_cod2', 'payment_cod2_order_status_id', '1', 0),

(0, 'payment_cod2', 'payment_cod2_geo_zone_id', '0', 0),

(0, 'payment_cod2', 'payment_cod2_status', '1', 0)

После этого чистим Модификаторы и включаем - "Оплата при доставке2"




Комментарии 0