[msDeliveryOnMap] Выбор адреса и подсчёт стоимости доставки одним кликом по карте

Пакет считает стоимость доставки по имеющимся в базе автомобилям и зонам, в которые эти автомобили доставляют.
Демо-сайт компонента msDeliveryOnMap
Купить компонент в Modstore

Зоны доставки:
Для того, чтобы компонент работал и считал стоимость доставки до определённого места, нам нужно добавить на странице компонента зоны доставки.Зона содержит название, которое во фронтенде нигде не выводится и необходимо только для обозначения зоны в бекенде. А также из обязательного:
- Расстояние от склада:

- или Область на карте:
Интересный момент:
Область на карте указывается в режиме редактирования и позволяет нарисовать любой требуемый многоугольник, потратив лишь немного времени. Однако, если у вас уже есть координаты многоугольника, то их можно ввести в поле «Координаты», и он мнгновенно добавится на карту.
Также, есть возможность указать properties и options у многоугольника. Здесь можно почитать о том, какие возможности они дают. Указываются эти поля в JSON формате, например так:
{"fillColor":"#6699ff","strokeColor":"#487cab","strokeWidth":2,"interactivityModel":"default#transparent","opacity":0.4}
Автомобили:
Следующим шагом будет добавление автомобилей, которые есть у нас в распоряжении.У автомобиля есть обязательное название, объём и длина. При желании, для автомобиля можно добавить изображение. После добавления автомобиля у нас есть возможность привязать зоны доставки к нему из ранее добавленных нами:

Привязка зоны к автомобилю:
При привязке зоны доставки мы можем указать различные варианты цены, либо вообще выставить договорную стоимость за данную зону у данного автомобиля:
Пояснять, за что отвечает каждый вариант цены, я думаю не нужно.Полная инструкция по настройке:
- Устанавливаем компонент и включаем способ доставки в настройках miniShop2.
- Заходим в системные настройки и указываем всё, что нам нужно.
Важным параметром является msdom_address_field. Он отвечает за поле, которое будет использовано в качестве полного адреса на странице корзины. По-умолчанию, для записи полного адреса задействовано поле city, которое в ms2 есть «из коробки». Можно заменить лексиконы бекенда/фронтенда для данного поля и оно вполне подойдёт для записи адреса при заказе.
- Создаём необходимые зоны на странице компонента.
- Создаём необходимые автомобили на странице компонента. После чего привязываем к каждому из автомобилей, зоны, в которые он будет доставлять.
- Заполняем товары так, чтобы в итоге можно было вычислить объём и длину единицы каждого товара. Можно добавить сразу объём/длину в товар, чтобы не вычислять их впоследствии «на ходу».
- В форму form.ms2_form, где находится наша кнопка «Добавить в корзину», добавляем 2 hidden поля, которые будут содержать информацию об объёме и длине:
Обратите внимание, что я указал объём и длину в виде ТВ полей, но у вас они могут быть указаны в виде ms2 свойств/опций. Либо вы можете вычислить объём на ходу, если у вас есть необходимые для этого данные (длина, ширина, высота).<input type="hidden" name="options[volume]" value="[[+tv_volume]]"> <input type="hidden" name="options[length]" value="[[+tv_length]]">
- Добавляем на страницу корзины или сразу в чанк tpl.msOrder.outer вызов сниппета:
[[!msDom?inCart=`1`]] - При желании, можно добавить вывод карты со списком автомобилей на любую другую страницу. Это удобно использовать на странице «Оплата и доставка», тем самым дав пользователю ознакомиться с примерными ценами на доставку в его район. Вот вывод сниппета:
[[!msDom]]
Спасибо Михаилу Воеводскому за спонсорскую поддержку!
Комментарии: 40
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Не сохраняются параметры
Версия PHP 5.4
Подскажите, куда копать?
Пакет тестировался на сайте заказчика пакета. Так что нет, ты не первый бета-тестер. Ты первый тестер с PHP 5.4. :)
Это как совет, для будущих исправлений.
Павел, Настя принимала участие в работе по данной задаче, прежде чем задача добралась до тебя.
Такие ошибки:
Uncaught TypeError: msDom.tmp.ms2CallbacksClone.Order.add.response.success is not a function
default.js: 163
и
Uncaught TypeError: msDom.tmp.ms2CallbacksClone.Order.getcost.response.success is not a function
default.js: 180
Подскажите пожалуйста решение.
Я думал там только отзывы можно писать.
Данный плагин подойдет?
1) Список автомобилей,
2) Список зон доставки,
3) Далее привязать зоны к автомобилям.
4) И важно то, чтобы у товаров были указаны длина и объём.
Но!.. В вашем случае, я думаю, длина и объём будет не важен. У вас стоимость доставки фиксированная для любого кол-ва заказанных блюд, верно? Вам нужно формировать цену только в зависимости от расстояния от точки старта? В таком случае, добавляете один автомобиль с заведомо большим объёмом и длиной (например: 999999). И добавляете зоны доставки (расстояния, по которым будет формироваться стоимость доставки). Далее привязываете эти расстояния к ранее добавленному автомобилю и выставляете необходимые параметры стоимости доставки (за км, либо фиксированную). Вот и всё, вроде как. Если что-то будет не ясно — пишите в службу поддержки компонента в modStore.pro.
При доставке более 1500 руб. доставка бесплатная. И еще есть до 10 км стоимость, свыше 10км и удаленные районы.
По второй части сообщения — не понял. Если можно, опишите подробнее, что имелось ввиду.
Можно ли с помощью этого компонента сделать расчёт стоимости доставки за каждый километр от границ многоугольника?
К примеру, доставка в пределах МКАДа бесплатная, а за пределы — фикс. стоимость за каждый км.
(Расстояние нужно считать от границ МКАДа, не от склада то есть)
Возможно ли в данном компоненте добавление нескольких точек старта?
А все что за пределами района(микрорайноны) оценивать в 700 без отрисовки доп зон?
api-maps.yandex.ru/services/search//v2/?callback=id_159259467443652378378&text=55.75396%2C37.620393&format=json&rspn=0&lang=ru_RU&token=a1ae8b8fdcb424fa45c938cc1840d0e6&type=geo&properties=addressdetails&geocoder_sco=latlong&origin=jsapi2Geocoder:1 Failed to load resource: the server responded with a status of 403 (Forbidden)
Отдает ответ вот такой
{
statusCode: 403,
error: «Forbidden»,
message: «Key is required»
}
К примеру из корзины мы передаем значение адреса доставки в письмо или в админку modx.
Подскажите, как можно получить название или id зон доставки. Т.е. планируется при оформлении заказа, в зависимости от выбранной зоны делать то или иное действие.