Calculation of delivery by clicking on the map
The author
44 108
Usually answers within a few days
Автор дополнения
44 108
Usually answers within a few days
Version 1.3.10-beta
Release date 08.04.2023
Downloads 180
Views 3 941
Warning! This component requires PHP version 5.4 or higher! If your site uses PHP less than required, the installation of this package could break it.
Warning! This package requires MODX not less than 2.3 !

The package calculates the delivery price for the available cars and the zones in which these cars can deliver.

Delivery areas:

In order for the component to work and count the cost of delivery to a certain place, we need to add a delivery zone component on the page.
The zone contains a name that is not displayed anywhere in the frontend and we need to indicate the zone in the backend. And also from the obligatory:

  • Distance from warehouse:

  • or area in the map:
    An interesting point:
    The area on the map is indicated in edit mode and allows you to draw any desired polygon, spending a little time. However, if you already have polygon coordinates, you can enter them in the «Coordinates» field, and it will instantly be added to the map.
    Also, it is possible to specify properties and options for a polygon. Here. you can read about what opportunities they give. These fields are specified in the JSON format, for example:



The next step is the addition of cars that we have at our disposal.
The car has a name, volume and length. If desired, you can add an image to the car. After adding a car, we can link delivery zones to it:

Linking the zone to the car:

When linking the delivery area to the car, we can specify different options for the price, or generally set the contract price for this zone for this car:
I do not think it is necessary to explain what each price option is responsible for.

Complete setup instructions:

  1. Install the component and enable the delivery method in the miniShop2 settings.
  2. Go to the system settings and specify all that we need.
    An important parameter is msdom_address_field. It is responsible for the field that will be used as the full address on the basket page. By default, the city field is used to write the full address, which is out of the box in ms2. You can replace the backend / frontend vocabulary for this field and it is quite suitable for recording the address when ordering.
  3. Create the necessary zones on the component page.
  4. Create the necessary cars on the component page. After that we link to each of the cars, the zones to which it will deliver.
  5. We indicate the goods so that in the end it is possible to calculate the volume and length of a unit of each product. You can add volume / length to the product at once, so that you do not calculate them later on the go.
  6. In the form form.ms2_form, where our «Add to Cart» button is located, add 2 hidden fields that will contain information about the volume and length:
    <input type="hidden" name="options[volume]" value="[[+tv_volume]]">
    <input type="hidden" name="options[length]" value="[[+tv_length]]">
    Note that I specified the volume and length as TV fields, but you can specify them as ms2 properties / options. Or you can calculate the volume on the move, if you have the necessary data for this (length, width, height).
  7. Add a snippet call to the basket page or directly to the tpl.msOrder.outer chunk:
  8. If desired, you can add the output of the map to the list of cars on any other page. This is convenient to use on the page «Payment and delivery», thereby giving the user to see the approximate prices for delivery to his area. Here's the snippet output:

1.3.10-beta (04.08.2023)

  • Исправлена проблема с отображением полного списка зон автомобилей в combobox

1.3.9-beta (31.05.2023)

  • Исправлена проблема с расчётом стоимости доставки при нулевом расстоянии

1.3.8-beta (01.03.2023)

  • Добавлена системная настройка msdom_delivery_time_field
  • Добавлена обработка поля delivery_time в default.js
  • Добавлена обработка поля delivery_time в msDeliveryOnMap::getCar

1.3.7-beta (10.02.2023)

  • Исправлен баг выборки CarZone при указании обратного диапазона времени

1.3.6-beta (06.02.2023)

  • Добавлена возможность указать время применения стоимости доставки (полезно для времени час-пик, ночной доставки, итп)

1.3.5-beta (09.12.2021)

  • Добавлено использование в админке координатов центра карты из системной настройки msdom_start_coordinates
  • Исправлен баг, когда координаты центра карты указывались с пробелом между значениями

1.3.4-beta2 (28.06.2020)

  • Исправлен баг с передачей опции zIndex типа String

1.3.4-beta (14.05.2020)

  • Добавлена поддержка отрицательных значений в поле "Надбавочная стоимость"

1.3.3-beta (22.03.2020)

  • Добавлен zIndex в опции области при добавлении на карту

1.3.2-beta (08.02.2020)

  • Добавлена ручная сортировка перетаскиванием зон

1.3.1-beta (29.01.2020)

  • Добавлено форматирование цены доставки на фронте
  • Добавлен параметр &cars в сниппет msDom для указания списка автомобилей
  • Добавлен параметр &startPoint в сниппет msDom для указания properties и options для точки склада
  • Добавлен параметр &finishPoint в сниппет msDom для указания properties и options для точки доставки
  • Добавлен параметр &route в сниппет msDom для указания params и options для маршрута

1.3.0-beta (27.01.2020)

  • Добавлен тип расчёта цены для зоны автомобиля
  • Добавлен процент от стоимости заказа для зоны автомобиля
  • Добавлена надбавочная цена для зоны автомобиля
  • Добавлена обработка поля "Бесплатная от суммы заказа" при договорной цене для зоны автомобиля
  • Добавлено текстовое примечание для зоны автомобиля
  • Исправлен вывод зон автомобиля для более компактного вида

1.2.6-beta (15.07.2019)

  • Исправлен баг в запросе выборки автомобилей

1.2.5-beta (11.07.2019)

  • Добавлено jQuery событие msdom_calculate в JS файл, срабатывающее при вычислении данных доставки

1.2.4-pl (02.07.2019)

  • Поправлено округление объёма, длины и веса не опираясь на локаль

1.2.4-beta (14.06.2019)

  • Добавлена грузоподъёмность в чанк списка автомобилей

1.2.3-pl (13.06.2019)

  • Добавлено округление объёма, длины и веса до сотых

1.2.2-pl (11.06.2019)

  • Исправлена выборка автомобиля

1.2.2-beta (11.06.2019)

  • Добавлены дополнительные вычисления в запрос на подбор автомобиля для выборки более подходящего авто

1.2.1-pl (09.06.2019)

  • Поправлен вывод в лог в методе msDeliveryOnMap::getCost

1.2.1-beta (09.06.2019)

  • Добавлено событие плагина msDomOnGetCost с параметрами: msDeliveryOnMap $msdom, array $data
  • Поправлено присвоение miniShop2 колбэков в JS

1.2.0-pl (08.06.2019)

  • Поправлена поддержка чисел разных типов в методе msDeliveryOnMap::getChainFieldValue
  • Поправлена ошибка нахождения автомобиля при локали, в которых в типе float используется запятая

1.2.0-beta (02.06.2019)

  • Добавлена опция "Вес" для автомобиля
  • Добавлена дополнительная сортировка в выборку автомобиля для подбора наилучшего варианта
  • Поправлено указание типа переменной передаваемой из PHP в JS у объекта msDomZone в бек-энде
  • Рефакторинг кода основного класса msDeliveryOnMap

1.1.2-beta (30.05.2019)

  • Добавлено расширенное поле для указания координат области
  • Поправлена совместимость с MySQL 5.7
  • Поправлен вызов метода fitToViewport() на карте в msDeliveryOnMap.ux.MapPolygonEditor

1.1.1-beta (05.06.2018)

  • Исправлен косяк с неотображением области на карте при повторном открытии окна редактирования зоны в бек-энде

1.1.0-beta (27.04.2018)

  • Добавлена функция "Бесплатная доставка от суммы заказа" для каждой зоны при привязке к автомобилю
  • Поправлена работа с контекстами

1.0.11-beta (08.02.2018)

  • Добавлена подгрузка библиотеки ymaps скрипта в бек-энде из настроек системы
  • Исправлена проблема с подгрузкой области при редактировании зоны в бек-энде

1.0.10-beta (11.12.2017)

  • Добавлена функция "Непогода" для способа доставки

1.0.9-beta3 (01.12.2017)

  • Исправлен косяк с неправильной установкой cookie, при установке добавлена опция path

1.0.9-beta2 (01.12.2017)

  • Исправлен косяк с некорректным формированием массива с зонами в методе msDeliveryOnMap::getCar()

1.0.9-beta (24.06.2017)

  • Исправлена проблема с двойным добавлением маршрута при инициализации карты, если поле "Адрес" заполнено

1.0.8-beta (10.09.2016)

  • Добавлена обработка доп. стоимости доставки

1.0.7-pl (15.07.2016)

  • В default.js поправлена совместимость с miniShop2 версии 2.4

1.0.7-beta (20.06.2016)

  • Поправлен SQL запрос выборки областей из базы при клике по карте

1.0.6-beta (01.06.2016)

  • Добавлена настройка указания ссылки на API Яндекс карт
  • Исправлена ошибка в консоли на страницах, где не инициализируется miniShop2

1.0.5-beta (31.05.2016)

  • Налажена работа JS при использовании на сайте библиотеки Mootools или PrototypeJS

1.0.4-pl (30.05.2016)

  • Восстановлена совместимость с PHP 5.3

1.0.4-beta (24.05.2016)

  • Масштаб карты по-умолчанию и масштаб при установке точки доставки - разделены

1.0.3-beta (24.05.2016)

  • Центр карты и координаты точки старта - разделены

1.0.2-beta (23.05.2016)

  • Добавлена возможность вывести сниппет msDom не на странице корзины
  • Добавлено изображение для автомобилей

1.0.1-beta (20.05.2016)

  • Добавлено удаление точки доставки и маршрута, при удалении вручную адреса из поля
  • Добавлен прелоадер при построении маршрута

1.0.0-beta2 (19.05.2016)

  • Поправлен подсчёт кол-ва рейсов

1.0.0-beta (19.05.2016)

  • Start