Примечание. Это руководство предназначено для 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 для получения ставок. Если вы знакомы со старыми модулями, вам не составит труда их обновить.