mscZone — расчет стоимости доставки
mscZone — расчет стоимости доставки с учетом зон доставки.
Особенности:- работа только с новым miniShop2 (version =>2.4.0-beta2)
- сниппет локации города доставки
- сниппет расчета стоимости корзины
- сниппет расчета стоимости продукта
Демо: msczone.vgrish.ru
Типы доставки:Можно создать любой тип доставки и задать для нее нужные характеристики
Установка:После установки компонента доступны 2 метода доставки.
- Почта
- Курьер
Включите необходимые вам методы. Поиск геообъектов реализован с помощью GeoNames Api. Нужно зарегистироваться в данном сервисе http://www.geonames.org/login и активировать http://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 - Идентификатор доставки
пример вызова
[[!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 — чанк информации о доставке