Документация

Описание

Компонент предназначен для:
- интеграции вариантов доставки, настройенных в сервисе eShopLogistic в Minishop2 (далее MS2);
- приёма заказов от виджетов eShopLogistic.

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

Чанки компонента рассчитаны на работу c pdoTools и шаблонизатором fenom.

Настройка вариантов доставки MS2

Необходима стандартная настройка нужных вам способов доставки в разделе «Пакеты / miniShop2 / Настройки».

Включите нужный вариант, активируйте нужные способы оплаты. Можно добавить логотип (варианты идут с компонентом в папке assets/components/eshoplogistic/logos/)

Настройка способов доставки MS2

Возможна ситуация, когда ни одного варианта доставки от eShopLogistic не будет получено (например в указанный населённый пункт просто никто не доставвляет или в данный момент по каким-то причинам система расчёта доставок будет недоступна).
Для такого случая рекомендуем создать отдельный способ доставки и указать его затем в системной настройке «Способ доставки по-умолчанию». Например такой:

Системные настройки компонента eShopLogistic

НастройкаОписание
Ключ API eShopLogistic Обязательно. Доступен после регистрации в сервисе и необходимой минимальной настройки в панели управления. Документация
Способ доставки по-умолчанию Укажите id варианта доставки по умолчанию, для случая, если не получено расчётных вариантов от сервисе eShopLogistic.
Учитывать способ оплаты Укажите «Да», если при расчёте стоимости доставки в ваших корректирующих правилах учитывается способ оплаты. В противном случае настройка должна быть выключена для снижения нагрузки, т.к. нет необходимости отслеживать способ оплаты. Что такое правила, смотрите в документации.
Методы оплаты MS2, ассоциируемые с типами: «Оплата картой», «Оплата наличными», «Безналичный расчёт» Для каждой службы доставки у вас могут быть настроены свои способы оплаты, кроме того в системе eShopLogistic способы оплаты имеют свою кодировку, которую нужно связать с идентификаторами способов оплаты на вашем сайте.
Указать id методов, через запятую.
Секретные коды виджетов Укажите секретные коды виджетов, от которых вы хотите принимать заказы на данном сайте.

В настройках виджета необходимо указать обработчик заказа: https://site.ru/assets/components/eshoplogistic/action.php. См. в документации: «Настройки виджета» -> «Корзина/Заказ», параметр «Скрипт обработки заказа».
Документация.
Сообщения при успешном создании заказа / ошибке Если настроен приём заказов от виджета, то данные сообщения будут показаны при соответствующем результате.
Префикс номера заказа Добавляется к номеру заказа MS2.
СSS-файл для фронта Файл css, который будет подключён в корзине сайта при включении модуля.
В случае необходимости внесения изменений в данный файл, создайте новый файл и укажите его здесь. Иначе при обновлении ваши изменения будут затёрты.
JS-файл для фронта Файл js, который будет подключён в корзине сайта при включении модуля.
В случае необходимости внесения изменений в данный файл, создайте новый файл и укажите его здесь. Иначе при обновлении ваши изменения будут затёрты.
Время жизни кэша данных доставок, часы Для снижения количества обращений к сервису eShopLogistic (есть тарифицированные лимиты), укажите возможно большее время кэширования, чтобы одинаковые запросы не запрашивались повторно. Рекомендуется 3-8 часов.

Настройка оформления заказа

  1. В системных настройках MS2 указать ms2_order_handler_class равным eslOrderHandler
    Внимание!
    Компонент реализует расширение класса msOrderHandler с переопределением метода getCost.
    Поэтому, если у вас уже есть кастомизации или расширение msOrderHandler, необходимо будет добавить в файл core/components/minishop2/custom/order/eslhandler.class.php ваши методы. Если кастомизаций нет, ничего делать не нужно.
  2. Вверху страницы корзины (например, внутри head) разместить сниппет {'eShopLogisticInit' | snippet}
  3. Скопировать чанк tpl.eShopLogistic.order, и чтобы ваша вёрстка не была затёрта при обновлении.
    В новом чанке настройте свою вёрстку. Важно оставить все элементы с классами и идентификаторами, начинающимися на esl-.
  4. Запустить сниппет msOrder с параметром tpl, равным вашему чанку:
    {'!msOrder' | snippet : ['tpl' => 'eShopLogistic.order']}

Если на вашем сайте работает какая-либо система определения местополождения, то для автоматического включения населённого пункта в расчёт доставки можно добавить в запуск сниппета eShopLogisticOrder параметры (на выбор): fias (ФИАС-код населённого пункта) или city (название населённого пункта).
Например: {set $services = '!eShopLogisticOrder' | snippet : ['fias' => $fias]}.
Если fias/city не указаны, то населённый пункт будет определён сервисом eShopLogistic автоматически по IP посетителя.

Указание габаритов

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

1) Если у товаров вашего магазина не указаны габариты в упаковке, можно воспользоваться параметром «Стандартная коробка / стандартный вес» в настройках службы доставки личного кабинета сервиса eShopLogistic.

2) Если у товаров вашего магазина указаны габариты в упаковке, то их необходимо добавить в объект корзины MS2.
Т.к. стандартных полей под габариты MS2 не имеет, очевидно, что данные у вас содержатся либо в полях объекта msProductData, либо в свойствах товара (объект msProductOption).
Проще всего добавить габариты можно с помощью плагина на событие msOnAddToCart:


switch ($modx->event->name) {

    case 'msOnAddToCart':
        $tmp = $cart->get();
        
        /**
        * Например, габариты у нас в dimensions_packing объекта msProductData. 
        * Формат значения dimensions Д*Ш*В, в сантиметрах
        */
        if($product = $modx->getObject('msProductData', $tmp[$key]['id'])) {
            $tmp[$key]['dimensions'] = $product->get('dimensions_packing');
            $cart->set($tmp);	
        }
        break;

}

Лексикон

В словарях для параметров, содержащих eshoplogistic_frontend_ можно указать нужное вам значение, вместо штатного.

Для параметров, содержащих eshoplogistic_frontend_service_ можно использовать placeholder «services».
Например: Курьер до адреса [[+service]]

Что делать, если что-то пошло не так

Если вдруг работа компонента или сервиса eShopLogistic вас перестала устраивать.
Чтобы ваш сайт при этом не постардал, я рекомендую делать так:

  • Обязательно настраивайте работу страницы заказа сначала без модуля в отдельном шаблоне или чанке;
  • Уже потом настраивайте работу корзины с использованием компонента в отдельном чанке/шаблоне.

Смысл в том, чтобы если нужно - просто переключить шаблон страницы оформления заказа и процесс оформления заказа пойдёт по ветке без компонента.

Чтобы «отфильтровать» способы доставки ваши от способов доставки, которые установит компонент, можно использовать проверку на наличие класса eslHandler:

{foreach $deliveries as $delivery}
    {if $delivery.class == 'eslHandler'} {continue} {/if}
    //some code
{foreach}

В таком случае даже выключать не нужные способы доставки экстренно не потребуется.