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>

Расчёт количество пакетов

Компонент с версии 2.6.0 может рассчитывать количество пакетов четырьмя разными способами. Способ расчёта определяется системной настройкой ms_cdek2_packages_calc_type. Возможные значения:

  • 0 - при этом способе расчёта будет добавлен один пакет вне зависимости от количества товаров в корзине (метод по умолчанию);
  • 1 - будет добавлено столько пакетов сколько уникальных позиций товаров есть в корзине;
  • 2 - будет добавлено столько пакетов сколько товаров есть в корзине;
  • 3 - количество пакетов будет рассчитано исходя из объема одного пакета, объем одного пакета рассчитывается по значению системной настройки ms_cdek2_default_size; Например, если в корзине лежит товар с размерами 20х30х10 и весом 1 кг в количестве 3 штуки, а ms_cdek2_default_size имеет значение 20х30х20, то будет добавлено два пакета:
php
$packages = [
    [
        'weight' => 2,
        'length' => 20,
        'width' => 30,
        'height' => 20
    ],
    [
        'weight' => 1,
        'length' => 20,
        'width' => 30,
        'height' => 10
    ],
];

Отдельными системными настройками можно управлять учётом количества (ms_cdek2_use_product_count) и индивидуальных размеров товаров (ms_cdek2_use_individual_sizes) при расчёте количества пакетов. По умолчанию обе застройка имеют значение false, т.е. при расчёте количества пакетов не учитывается ни количество, ни индивидуальные размеры, а берутся значения по умолчанию (из системных настроек).