[mscZone] - расчет стоимости доставки Minishop2

mscZone — расчет стоимости доставки с учетом зон доставки.

Особенности:
  • работа только с новым miniShop2 (version =>2.4.0-beta2)
  • сниппет локации города доставки
  • сниппет расчета стоимости корзины
  • сниппет расчета стоимости продукта
Демо: msczone.vgrish.ru

Типы доставки:

Можно создать любой тип доставки и задать для нее нужные характеристики

Установка:

После установки компонента доступны 2 метода доставки.
  • Почта
  • Курьер


Включите необходимые вам методы.
Поиск геообъектов реализован с помощью GeoNames Api. Нужно зарегистироваться в данном сервисе www.geonames.org/login
и активировать www.geonames.org/manageaccount

Зоны доставки:

Доступны для редактирования в окне метода доставки на одноименной вкладке.


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

  • continentCode — код континента
  • countryCode — код страны
  • adminId1 — идентификатор области
  • geonameId — идентификатор город
Назначаете каждой зоне свои цены и время доставки.

Расчет стомости:

За расчет стоимости доставки отвечает класс mscZoneCalculateHandler. Можно подключить свой кастомный класс унаследовав базовый
и переопределив метод calculateCost.
Логика базового класса проста, берется локация пользователя и согласно настройке geonames_zone_keys
Ищутся схождения по имеющимся зонам, если таковые имеются идет расчет доставки. Приоритет зон обратный порядку ключей заданных в настройке.
То есть мы ищем города, области, страны, континенты.

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

mscZone.Settlement — точки доставки
Сниппет mscZone.Settlement — для выбора населенного пункта доставки. По умолчанию активен населенный пунк — Москва.
Можно вывести поповер с выбором населенного пункта. Список стран доставки регулируется настройкой
geonames_country

поповер с выбором населенного пункта

[[!mscZone.Settlement?
	&tpl=`mscZone.Settlement.popover`
	]]
mscZone.Order — расчет стоимости корзины
Сниппет mscZone.Order — для расчет стоимости корзины.
Практически сниппет обертка, выполняет необходимые действия, данные выставляет в плейсходеры, затем запускает
поочередно сниппеты из списка elements. Последним необходимо указать родной сниппет msOrder.

  • tpl — Чанк оформления
  • elements — Список сниппетов через запятую, которые нужно запустить
  • processBlocks — JSON строка содержащая блоки необходимые для обработки
пример вызова

[[!mscZone.Order?
	&processBlocks=`{
	"delivery-info" => "mscZone.block.delivery.info",
	}`
	]]

сниппет mscZone.Product.cost — расчет стоимости продукта
  • tpl — Чанк оформления
  • product — Идентификатор продукта
  • delivery — Идентификатор доставки

пример вызова

	<div class="msczone-product-cost-mail"></div>
	[[!AjaxSnippet?
	&snippet=`mscZone.Product.cost`
	&delivery=`2`
	&as_target=`.msczone-product-cost-mail`
	]]]
События
  • mscZoneOnGetProductOption — получение опций продукта

Важно
— компонент предназначен для работы с новым miniShop2 версии >= 2.4.0-beta2
— работа компонента не тестировалась с другими компонентами доставки, возможны конфликты в работе.

Кастомизация
У методов доставки доступны следующие свойства

  • hidden — список полей которые необходимо скрыть при активной доставке. Например — index,region,city,street,building,room,delivery_address,msczone_delivery_info

Чанки
  • mscZone.Settlement.popover — чанк выбора населенного пункта в поповере
  • mscZone.order — чанк заказа магазина. Взят дефолтный чанки и добавлены блоки с дополнительной информацией.

    — msczone_delivery_info — информация о выбранной доставке
  • mscZone.block.delivery.info — чанк информации о доставке
  • p.s. Всем спасибо за внимание. Компонент в магазине modstore.pro/packages/delivery/msczone
Володя
07 июля 2017, 10:47
modx.pro
2 003
+4
Поблагодарить автора Отправить деньги

Комментарии: 1

Наталья Олиферович
17 января 2022, 11:59
0
Добрый день. Хочу купить дополнение для miniShop2. Рассматриваю пакеты mscZone и mscDistance. Подскажите, какой из пакетов подойдёт лучше для реализации динамического поиска города в корзине и установки соответствующей стоимости доставки после выбора города?
Заранее спасибо)
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1