Создание своих типов доставки

Материал из Umicms
Перейти к:навигация, поиск

Актуально для версии 20

В этой статье мы рассмотрим создание своего типа доставки.

Для создания нового типа доставки нужно проделать ряд несложных действий:

1.

  • В модуле “Шаблоны данных” создаём новый тип данных, дочерний к типу “Тип доставки”.
  • В поле “Системный идентификатор” вписываем идентификатор нашей доставки, в нашем примере это будет new
  • В поле “Назначение” выбираем “Тип доставки”
  • Запоминаем идентификатор созданного типа данных (можно посмотреть в адресной строке браузера - последнее числовое значение в строке)
  • Сохраняем

2.

  • Открываем справочник “Типы данных”, нажимаем на “Добавить наименование справочника”.
  • Вводим название, идентификатор, в нашем случае идентификатор будет deliveryNew
  • В поле “Тип данных(id) вводим запомненный нами в пункте 1 идентификатор типа данных
  • Сохраняем

3.

  • Открываем справочник “Способ доставки”, нажимаем на “Добавить наименование справочника”.
  • Вводим название нашей доставки, у нас это будет “Новая доставка”
  • В поле “Тип доставки” выбираем созданный нами новый тип доставки
  • Настраиваем другие поля необходимым нам образом
  • Сохраняем

Теперь необходимо написать реализацию функционала доставки.
Создаём файл с именем, которое должно быть равно идентификатору типа доставки, который мы выбрали в пункте 1. Т.е. у нас это будет файл new.php Копируем код из стандартного файла доставки delivery.php, который находится в папке ~/classes/components/emarket/classes/delivery/ Название класса новой доставки должно быть названием файла с кодом + Delivery. Т.е. в нашем случае это будет newDelivery

На этом создание нового типа доставки окончено. Далее нам необходимо описать нужную нам реализацию функционала этого типа доставки на основе кода, который мы скопировали из стандартного файла доставки.

Также мы можем расширить созданный ранее тип доставки, отредактировав тип данных. Например, через модуль Шаблоны Данных добавим новое поле "Стоимость" с идентификатором "price" в наш тип доставки. Теперь изменим метод getDeliveryPrice, чтобы он использовал созданное поле price:

public function getDeliveryPrice(order $order) {
	return $this->object->getValue('price');
}

Таким образом, при создании способа доставки можно будет указать значения для полей, которые были созданы.

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