[mscDistance] - доставка по городу/району
mscDistance — рассчитывает стоимость доставки, с учетом расстояния от точки до точки.
Вкратце — вы создаете сами тарифную сетку доставки.

Особенности
Типы доставки
Ваш собственный тип доставки.
Установка
После установки компонента доступен 1 метод доставки.
Необходимовыставить точку отправления

Задать цены

сниппет mscDistance.Order — расчет стоимости корзины
параметры
пример вызова
Информация о доставке
Вся информация о доставке пишется в поле properties msOrderAddress.
Так же доступна в админке на странице заказов.

Важно
Компонент предназначен для работы с новым miniShop2 версии >= 2.4.0-beta2
Другие компоненты по расчету стоимости доставки будут переписаны по аналогии, на данный момент они не совместимы.
Совместимость
пример вызова корзины для доставки msDellin2 и mscDistance
ps. Всем спасибо за внимание!
Вкратце — вы создаете сами тарифную сетку доставки.

Особенности
- работа только с новым miniShop2 (version =>2.4.0-beta2)
- сниппет для расчета стоимости корзины
- каждому методу доставки своя точка отправления и свои цены
Типы доставки
Ваш собственный тип доставки.
Установка
После установки компонента доступен 1 метод доставки.
Необходимовыставить точку отправления

Задать цены

сниппет mscDistance.Order — расчет стоимости корзины
параметры
- elements — cписок сниппетов через запятую, которые нужно запустить.
- pointName — имя точки доставки
пример вызова
[[!mscDistance.Order?
]]Информация о доставке
Вся информация о доставке пишется в поле properties msOrderAddress.
Так же доступна в админке на странице заказов.

Важно
Компонент предназначен для работы с новым miniShop2 версии >= 2.4.0-beta2
Другие компоненты по расчету стоимости доставки будут переписаны по аналогии, на данный момент они не совместимы.
Совместимость
пример вызова корзины для доставки msDellin2 и mscDistance
[[!msDellin.Order?
&elements=`mscDistance.Order,msOrder`
&tpl=`msAll.order`
]]ps. Всем спасибо за внимание!
Комментарии: 35
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
msAll.order — это сборный чанк, вот пример gist.github.com/vgrish/1061f0295e665b02b9d5f878c7f7cd17
Правильно ли я понимаю, что чанк должен содержать только те способы доставки что существуют в системе? или я скопипастил криво?
Не могли бы объяснить, как работает штука чит на картинке?
Пытался понять, но видимо дурак, потому что стоимость доставки всегда выходит 6800 :-).
Точка (координаты склада) настроенна, а результат в корзине такой:
Я не понял как настроить доставку так:
Стоимость — 80₽ км, доставка осуществляется в пределах 70 км от склада
ограничений как таковых помоему нет, просто задайте для верхнего диапазона завышенную стоимость и все.
или можно плагином на событие mscDistanceOnAfterRequest
как он настраивается, где добавляется не отобразился (
инструкцию пожалуйста дайте
Куда прописать?
С 2019 года не обновлялся, думаю понятно почему так дёшево стоит много ошибок ((
Автор отличный. Рекомендую.
Например на mscDistance
есть указание возможности задания настроек.
Например не нашел в настройках способа доставки (задаваемого в настройках Minishop) возможность ограничить:
Город доставки — указать город в пределах которого осуществляется доставка товаров
Регион доставки — указать регион в пределах которого осуществляется доставка товаров
Вот хочу я например ограничить доставку одним городом, чтобы не выводил адреса из других городов. Сейчас можно указать адрес доставки другие города что мешает.
Сейчас в системных настройках по mscdistance пусто. Пробовал переустановить, все равно пусто.
Или можно указанные настройки вручную создать. Как они будут работать. Почему нельзя было вывести в системные настройки? Или это баг?
Еще очень хотелось бы чтобы пользователь мог выбрать точку на карте (кликнуть по зданию) и указать что-то типа доставить сюда.
Ведь это было удобно для пользователя.
Плюс еще есть потребность чтобы если пользователь авторизован, адрес доставки можно хранить в настройках пользователя и при оформлении заказа у авторизованного пользователя была возможность выбирать адрес доставки по умолчанию — и тогда при оформлении заказа чтобы доставка рассчитывалась для этого адреса, выбранного по умолчанию (или даже хранить несколько адресов у пользователей и была возможность выбирать в момент оформления заказа.)
И еще вопрос за что отвечает mscDistance.product.cost (не уверен входит ли он в стандартную поставку компонента — на исправляемом сайте клиента компонент уже стоял, возможно этот сниппет был создан другим программистом)? Как его использовать? Посмотрел код, можно разобраться. Но было бы правильно указать его описание на странице компонента — сейчас там о нем нет описания.
Или же пользователь ввел заново название города, а улицу не указал (есть адреса типа железнодорожная станция и она не сохраняется как улица), или она не подставилась, и доставка точно не посчиталась/ не обновилась. У меня происходит так что если указать просто Новосибирск — то выводится Новосибирск, и тогда считается доставка в центр или даже оставляет старый маршрут (карта не перерисовывается) и стоимость доставки не меняется. Для указания просто города наверное вообще надо делать чтобы доставка не считалась правильно указанной и посчитанной.
Вижу решение проблемы чтобы через js проверять чтобы улица (поле street, делаю у себя скрытым, заполняется после заполнения через поле mscdistance_delivery_to_point) была заполнена.
Но были также ошибки когда не считается переменная mscdistance_delivery_distance. И доставка не считается. Как быть в этом случае? Приходится думать в сторону написания JS кода для проверки наличия заполнения mscdistance_delivery_distance (ну и mscdistance_delivery_to_point соответственно).
Попробовал сделать такой код на проверку что поле адреса пустое вызывая команду mscDistance.initialize();
Не работает, сумму доставки и карту не обновляет. Какая команда в js отвечает за переинициализацию доставки (стоимости и карты маршрута)?
Была проблема плохой работы на мобильных устройствах. Почитал справочные материалы — оказалось что вроде на устройствах с низкой скоростью интернета методы со вставкой кода (метод document.writeln в default.js) плохо срабатывают — где-то пишут что блокируется браузером. Вышеуказанный метод вставки кода непосредственно в начало чанка head помог с решением проблемы. Но это костыль. Вставлял так:
По сути это повтор 5 строки скрипта assets/components/mscdistance/js/web/default.js — и сайт сразу стал прекрасно работать и на мобильном тоже. Таковы мои изыскания нескольких бессонных ночей. Искал причину по разному, переделал форму заказа и корзины, а оказалось проблема в конфликте кода метрики с кодом подключения карт.
В нем есть на строке 167285:
— через просмотр источника в вкладке Sources всплывает подсказка о ошибке на текст «insertBefore(tag, document.head.firstChild)» — текст сообщения об ошибке «Failed to load resource:the server responded with a status of 400 ()»
На него в консоли выходит ошибка:
Подскажите что сделать чтобы исправить ошибку?
Пытаюсь обновить апи ключ в кабинете разработчика developer.tech.yandex.ru/services, выдает что ключ неправильный. Какой АПИ должен использоваться? JavaScript API и HTTP Геокодер или Static API Яндекс.Карт?
Еще при регистрации как указыватья от частного лица или юр.лица? Там на юриков тарифы появлятся? драконовские. Или ограничения срабатывают.
Вообще компонент бы надо обновить!
Яндекс API изменилось.
Теперь помимо основного ключа Api в случае если на сайте используется поисковые подсказки (что в дополнении реализовано при вводе адреса доставки строка поиска suggestview и выводит всплывающими подсказками варианты адресов) — то надо подключить API Геосаджеста.
Ответ от Разработчиков (повторю здесь есть на просторах тырнета):
Я добавил в кабинете разработчика ключ API Геосаджеста, добавил его в у себя на сайте.
А именно:
1. У меня подключение к API-карт продублировано в head перед подключением метрики, т.к. были проблемы с кодом метрики, конфликтовал. Не ставить код яндекс.карт рядом с кодом Яндекс.Метрики — замечена ошибка работы карт если код карт ставить рядом с кодом метрики. Также код ниже указан с apikey т.к. замечено что иногда код не подхватывается на мобильных устройствах — судя по справкам и анализу ошибок это связано с тем что в некоторых случаях браузер из-за низкой скорости интернета в основном на мобильных устройствах блокирует работу скриптов для ускорения.
2. apikey должны быть также указаны в assets/components/mscdistance/js/web/default.js:
В первые моменты выводило ошибку доступа на