Примечание. Это руководство предназначено для osCommerce v4.
1. Создание файла
Сначала вам нужно создать файл для нового модуля и поместить его в следующий каталог.
/lib/common/modules/orderShipping/
Например, давайте назовем этот новый модуль доставки custom.php .
Скелет файла должен выглядеть следующим образом:
<?php
/**
* namespace
*/
namespace common\modules\orderShipping;
/**
* used classes
*/
use common\classes\modules\ModuleShipping;
use common\classes\modules\ModuleStatus;
use common\classes\modules\ModuleSortOrder;
/**
* class declaration
*/
class custom extends ModuleShipping {
/**
* variables
*/
public $enabled = false;
public $code = 'custom';
public $icon = '';
public $title = '';
public $description = '';
/**
* default values for translation
*/
protected $defaultTranslationArray = [
'MODULE_CUSTOM_TEXT_TITLE' => 'Custom rates',
'MODULE_CUSTOM_TEXT_DESCRIPTION' => 'My custom rates',
];
/**
* class constructor
*/
function __construct() {
parent::__construct();
$this->title = MODULE_CUSTOM_TEXT_TITLE;
$this->description = MODULE_CUSTOM_TEXT_DESCRIPTION;
if (!defined('MODULE_CUSTOM_STATUS')) {
$this->enabled = false;
return false;
}
$this->sort_order = MODULE_CUSTOM_SORT_ORDER;
$this->enabled = ((MODULE_CUSTOM_STATUS == 'True') ? true : false);
$this->tax_class = MODULE_CUSTOM_TAX_CLASS;
}
/**
* you custom methods
*/
function quote($method = '') {
$methods = [];
$methods[] = [
'id' => 1,
'title' => 'Today',
'cost' => 10
];
$methods[] = [
'id' => 2,
'title' => 'Next day',
'cost' => 5,
];
$this->quotes = [
'id' => $this->code,
'module' => MODULE_CUSTOM_TEXT_TITLE,
'methods' => $methods
];
if ($this->tax_class > 0) {
$this->quotes['tax'] = \common\helpers\Tax::get_tax_rate($this->tax_class, $this->delivery['country']['id'], $this->delivery['zone_id']);
}
if (tep_not_null($this->icon)) {
$this->quotes['icon'] = tep_image($this->icon, $this->title);
}
return $this->quotes;
}
/**
* configuration fields
*/
public function configure_keys() {
return array(
'MODULE_CUSTOM_STATUS' => array(
'title' => 'Enable My Custom Shipping',
'value' => 'True',
'description' => 'Do you want to enable shipping?',
'sort_order' => '0',
'set_function' => 'tep_cfg_select_option(array(\'True\', \'False\'), ',
),
'MODULE_CUSTOM_TAX_CLASS' => array(
'title' => 'Tax Class',
'value' => '0',
'description' => 'Use the following tax class on the shipping fee.',
'sort_order' => '0',
'use_function' => '\\common\\helpers\\Tax::get_tax_class_title',
'set_function' => 'tep_cfg_pull_down_tax_classes(',
),
'MODULE_CUSTOM_SORT_ORDER' => array(
'title' => 'Sort Order',
'value' => '0',
'description' => 'Sort order of display.',
'sort_order' => '100',
),
);
}
public function describe_status_key() {
return new ModuleStatus('MODULE_CUSTOM_STATUS', 'True', 'False');
}
public function describe_sort_key() {
return new ModuleSortOrder('MODULE_CUSTOM_SORT_ORDER');
}
}Примечание: обратите внимание на обязательные элементы:
namespace указывающее размещение класса
использовать классы модулей , используемые для создания установки
объявление класса с обязательным наследованием от ModuleShipping
variables необходимые для вашего модуля
ключи для транзакции
конструктор выполняет инициализацию
функция цитаты для предоставления списка методов
поддержка tax_class
минимальный набор полей конфигурации
функция description_status_key отвечающая за условие
функция description_sort_key отвечающая за порядок сортировки
Не рекомендуется закрывать php tag во избежание отображения непечатаемых символов на страницах.
2. Установка модуля
После того, как вы вошли в админ-панель вашего сайта, нажмите на вкладки « Модули » и « Доставка ». Включите переключатели « Показать неактивные » и «Показать не установленные », найдите свой модуль и нажмите кнопку «Установить».

Проверьте клавиши и включен ли модуль . Если в вашей версии есть раздел Доступно для , заполните его и сохраните изменения.

3. Тестирование
Если у вас несколько каналов продаж, обязательно примените настройки к нужному. Проверьте список ваших модулей.
Если вы следовали всем рекомендациям, информация на фронтенде будет следующей.

Как видно на предыдущем снимке экрана, налог не применялся к стоимости доставки. Чтобы исправить это, измените налоговый класс на нужное значение в настройках модуля.
После этого соответствующие значения на фронтенде увеличиваются на 20%.

4. Вывод
Этот пример самый простой. В большинстве случаев предоставленные решения должны соответствовать вашим требованиям. Однако
этот пример дает представление о том, как подготовиться к использованию
более сложных структур, использующих API для получения ставок. Если вы знакомы со старыми модулями, вам не составит труда их обновить.
