Создание пользовательского метода доставки в OpenCart: часть 2

Создание пользовательского способа доставки в OpenCart

От автора: в этой серии мы обсуждаем, как реализовать в OpenCart методы доставки с пользовательскими настройками. В первой части мы включили и настроили наш пользовательский метод доставки, используя форму конфигурации в back-end. Сегодня мы реализуем файлы, которые требуются OpenCart, чтобы он мог обнаружить пользовательский способ доставки и перечислить его вместе с другими включенными способами доставки во время проверки.

Я надеюсь, что вы создали все файлы из первой части этой серии. А если вы еще не прошли первую часть, то я бы посоветовал сделать это, прежде чем продолжить. Кроме того, я предполагаю, что вы используете последнюю версию OpenCart.
Взгляд на настройку файла во front-end

Начнем со списка необходимых файлов:

catalog/language/english/shipping/custom.php: Это языковой файл, в котором мы будем определять метки.

catalog/model/shipping/custom.php: Это файл модели, который важен, поскольку большая часть логики расчета доставки идет здесь.

Это то, что касается настройки front-end.

Настройка файла

Начнем с настройки языкового файла.

Создание языкового файла

Создайте файл catalog/language/english/shipping/custom.php и вставьте в этот файл следующее содержимое.

Я не думаю, что это требует каких-либо объяснений, так что давайте двигаться дальше!

Создание файл модели

Создайте файл catalog/model/shipping/custom.php и вставьте в него следующее содержимое

В соответствии с требованиями OpenCart имя класса должно быть, ModelShippingCustom. Также есть getQuote метод, который является обязательным для нашего метода доставки, и который будет выбран OpenCart.

Стоит заметить, что $address аргумент передается в getQuote методе, который является адресом доставки клиента во время проверки, и позволяет нам решить, применим ли текущий метод доставки для географической зоны, принадлежащей этому адресу. Это определяется следующим кодом.

Как можно увидеть, мы используем $this->config->get метод для загрузки значений для переменных конфигурации типа «custom_cost», «custom_tax_class_id» и «custom_sort_order». Вспомните первую часть, в которой мы настроили эти значения, используя настраиваемую форму конфигурации!

Кроме того, важным фрагментом для уведомления является значение text ключа в $quote_data массиве. Он вычисляет и форматирует общую сумму, которая будет взиматься за наш метод доставки. В частности, он проверяет, следует ли добавить дополнительный налог на «стоимость» метода доставки. Вспомните настройки налогового класса, которые мы предоставили в нашей форме конфигурации, в которой мы выбрали Taxable Goods. Таким образом, он добавит дополнительный налог на общую сумму доставки!

Мы попытались упростить нашу модельную часть, но вы можете делать все вычисления в этом файле в соответствии с вашими API-интерфейсами API доставки, если таковые имеются. Это то, что касается части модели.
Демонстрация во front-end

Во front-end добавьте несколько продуктов в корзину и начните процесс оформления заказа. В шаге 4: Delivery Method, вы должны увидеть наш пользовательский способ доставки, указанный в следующем скриншоте.

Он указан в заголовке «Custom Shipping Rate — $14.00». Вы можете быть удивлены тем, что, хотя мы установили параметр Cost на 10,в списке он отображает 14. Как я упоминал ранее, мы сконфигурировали Taxable Goods в поле Tax Class в форме конфигурации в back-end. Перейдите в Localization > Taxes > Tax Classes. Вы увидите, что для этого налогового класса настроен 20% НДС и 2 $ Eco Tax . Таким образом, он добавляет еще 4 доллара к стоимости! Конечно, если вы установите для Tax Class значение None, налог не будет применяться вообще!

Это была тема на сегодня. Теперь мы успешно создали полноценный пользовательский метод доставки в OpenCart!

Заключение

Я надеюсь, что вам понравилась эта серия из двух частей, и вы узнали что-то полезное. И не забудьте поделиться своими отзывами.

Автор: Sajal Soni

Источник: //code.tutsplus.com/

Редакция: Команда webformyself.

Метки:

Похожие статьи:

Комментарии Вконтакте: