Skip to content
  1. Компоненты
  2. ms_CDEK2

ms_CDEK2

Внимание

Данная документация актуальна для версии компонента 2.4.1 и выше.

Внимание

Компонент msDeliveryProps больше не нужен.

Требования

  1. Modx 2.8.x
  2. PHP >=7.4
  3. MySQL 5.7

Возможности

  1. Расчёт стоимости доставки в соответствии с указанными тарифами.
  2. Выбор ПВЗ из списка или на карте (нужно получить токен для JavaScript API и HTTP Геокодер).
  3. Подсказки при вводе адреса от сервиса DaData.

Порядок работы

Для расчёта стоимости доставки компоненту требуется почтовый индекс, который следует указать в поле [name="index"]. Пользователь может ввести его сам или вы можете настроить подсказки при вводе адреса, и тогда при выборе одной из подсказок индекс заполнится автоматически.

После получения индекса работает стандартная логика компонента miniShop2, которая приводит к вычислению стоимости доставки. Затем в колбэке на событие Order.getcost.response.success, если выбран способ доставки до ПВЗ, получаем список ПВЗ, и, в любом случае, получаем статус доставки (всю информацию которую вернул API СДЭК), чтобы показать его пользователю, если на странице есть соответствующий блок (подробности ниже).

Если получали список ПВЗ и на странице есть блок для отрисовки карты, то рисуем карту. При выборе ПВЗ в списке, карта будет перемещена по координатам ПВЗ, а маркет обведёт в кружок. При выборе ПВЗ на карте, значение в списке так же поменяется.

Информация

Компонент умеет учитывать страну, для этого нужно добавить поле [name="country"]. Страна учитывается при предоставлении подсказок, при получении списка ПВЗ и при расчёте стоимости.

Быстрый старт

Информация

Ни один из html-блоков, которые будут упомянуты ниже, не является обязательным для расчёта стоимости доставки, кроме поля ввода почтового индекса.

После установки компонента ОБЯЗАТЕЛЬНО выполнить первые 6 пунктов из списка ниже:

  1. Перейдите в системные настройки и выберите пространство имён ms_cdek2;
  2. Установите свои значения в поля с ключами ms_cdek2_login и ms_cdek2_password;
  3. Установите индекс отправителя в поле ms_cdek2_sender_index;
  4. Убедитесь, что в поле ms_cdek2_deliveries установлены правильные ID способов доставки (door — доставка до двери, pvz — доставка в ПВЗ);
    Подробнее

    Например ID достаки до двери у вас 9, а до ПВЗ 10, тогда значение этой настройки будет выглядеть так {"door":"9","pvz":"10"}.

  5. Убедитесь, что в поле ms_cdek2_tariffs установлены правильные ID способов доставки и ID тарифов СДЭК (доставка до двери для ИМ тариф 137, доставка в ПВЗ - 136);
    Подробнее

    Например ID достаки до двери у вас 9, а до ПВЗ 10, тогда значение этой настройки будет выглядеть так {"9":"137","10":"136"}.

  6. Установите номер шаблона с формой оформления заказа в поле ms_cdek2_template (чтобы скрипты фронтэнда подключались только на страницах с этим шаблоном);
  7. Если используете доставку до ПВЗ, то в чанке с формой оформления заказа добавьте код
html
 <div data-mscdek-list></div>

Информация

Если отправка будет не из РФ, укажите корректный код страны отправителя в системной настройке ms_cdek2_sender_country.

Внимание

Список ПВЗ должен выводится в элементе select как в чанке mscdekListWrap или не выводиться вовсе.

Информация

Если решили не выводить список ПВЗ, вставляйте вместо

html
<div class="hide" data-mscdek-list></div>

скрытое поле

html
<input type="hidden" name="point">

Вывод карты со списком ПВЗ

  1. Получите ключ для JavaScript API и HTTP Геокодер;
  2. Установите полученный ключ в системную настройку ms_cdek2_yandex_api_key;
  3. В шаблон с формой оформления заказа вставьте код
html
<div class="hide" data-mscdek-map></div>

Подсказки при вводе адрес

  1. Получите токен в сервисе DaData;
  2. Установите полученный токен в системную настройку с ключом ms_cdek2_dadata_token;
  3. Полю, в которое пользователь будет вводить адрес добавить атрибут data-mscdek-suggest-field;
  4. В шаблон с формой оформления заказа вставьте код
html
<ul class="hide" data-mscdek-suggest-list></ul>

Вывод информации о сроках доставки

  1. В шаблон с формой оформления заказа вставьте код
html
<div class="hide" data-mscdek-status></div>