[ms_CDEK2] - Все с нуля




Всем привет, ребята! В ноябре ко мне на курирование перешел компонент msCDEK т.к. в последней выпущенной версии поломалось абсолютно все, я повтыкал в исходники и было принято решение снять компонент с публикации а также переписать его полностью с нуля.

Представляю вам вторую версию компонента! Главные отличия от старой версии:

  • Была немного переписана стандартная библиотека сдэк'а, компонент научился работать с индексами покупатель может указать только индекс или только город или все вместе и компонент рассчитает стоимость
  • Поддержка дополнительной цены (наценки)
  • Не конфликтует с другими методами доставки т.е. выводит статус времени и цены доставки только когда выбран сдэк, убирает его если выбран метод доставки не сдэк
  • Устранены проблемы с записью города в заказ
  • Выводимая информация о удачном расчете/времени доставки/ошибки расчета теперь выводится через чанки используя феном и pdoTools, вы можете спокойно модифицировать его, добавлять условия и т.д.
  • Для автокомплита теперь не используется громоздкий jquery UI, теперь используется маленькая библиотека на ванильном JS от pixabay
  • Компонент не требует модификации полей оформления заказа все подгружается и подключается самостоятельно
  • Добавлена возможность отключить автокомплит вообще
  • Добавлено корректное удаление дополнения, он чистит за собой все методы, что добавил
  • Авторизация работает корректно
  • Для города — отправителя теперь не нужно искать ID города в каких — то списках, достаточно указать индекс отправителя в настройках
  • Главный JS скрипт можно переопределить опять же в настройках
  • Компонент больше не совместим с msRussianPost

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

Демо-сайт
Купить дополнение
Что может:
  • Расчет цены и времени доставки СДЭК
  • Вывод статуса на фронт сайта
  • Расчет по индексу и/или названию города
  • Автокомплит городов
  • После выбора города поле области автоматически заполняется
Установка компонента:

  1. Если у вас была установлена первая версия, то перед установкой выполните зачистку старых методов доставки СДЭК (приложения->minishop2->настройки (вкладка варианты доставки) выберите все методы доставки от msCDEK (поддерживается мультивыбор через shift) затем нажмите правой кнопкой мыши и выберите «Удалить выбранные»
  2. Установите компонент из modstore
  3. На странице корзины в любом месте вызовите сниппет msCDEK.init
    {'!msCDEK.init' | snippet}
    	
    или
    [[!msCDEK.init]]
    	
    он подключит нужные js файлы а также создаст несколько глобальных js переменных.
    Внимание, у вас должен быть также подключен Jquery, компонент самостоятельно его не подключает! Если вы противник jquery по религиозным соображениям, вы можете переопределить стандартный скрипт, он очень прост и jquery там используется по минимуму
  4. В любом месте на странице корзины добавьте блок
    <div id="ms_cdek2_status"></div>
    сюда будет записываться информация о времени и цене доставки, а также об ошибках, если таковые будут
  5. Перейдите в системные настройки->ms_cdek2 и укажите ваш логин и пароль от СДЭК (если имеется), а также Индекс города-отправителя
Опциональность:
  • В чанке cdek2.status.success можно задать свой шаблон вывода статуса удачного расчета, туда передается три переменных:
    • price — цена доставки
    • min — минимальное кол-во дней доставки с момента отправления
    • max — максимальное кол-во дней доставки с момента отправления
  • В чанке cdek2.status.error можно задать свой шаблон вывода статуса неудачного расчета, туда передается одна переменная:
    • code — код ошибки. Он нужен для того, чтобы покупатель мог сообщить менеджеру какая именно ошибка произошла, также во время ошибки в лог modx'a записывается код ошибки и его расшифровка, так что вам не обязательно помнить все коды наизусть
Расшифровка кодов ошибок:
0 - Внутренняя ошибка на сервере. Обратитесь к программистам компании СДЭК для исправления.
1 - Указанная вами версия API не поддерживается 
2 - Ошибка авторизации 
3 - Невозможно осуществить доставку по этому направлению при заданных условиях 
4 - Ошибка при указании параметров места 
5 - Не задано ни одного места для отправления 
6 - Не задан тариф или список тарифов 
7 - Не задан город-отправитель 
8 - Не задан город-получатель
9 - При авторизации не задана дата планируемой отправки
10 - Ошибка задания режима доставки
11 - Неправильно задан формат данных
12 - Ошибка декодирования данных. Ожидается <json или jsop>
13 - Почтовый индекс города-отправителя отсутствует в базе СДЭК
14 - Невозможно однозначно идентифицировать город-отправитель по почтовому индексу
15 - Почтовый индекс города-получателя отсутствует в базе СДЭК
16 - Невозможно однозначно идентифицировать город-получатель по почтовому индексу

На что стоит обратить внимание:
  • Выбор города приоритетней, чем индекс, т.е. если вдруг покупатель выбрал город, а потом решил поменять индекс, не изменив город, то доставка будет рассчитываться исходя из выбранного города
  • При изменении полей индекса или города метод доставки сбрасывается
  • Компонент не реализует функционал интеграции, только функционал калькулятора, если появится спонсор на интеграцию, тогда возможно это будет сделано
  • Только minishop2.4+
22 января 2018, 17:12    Pavel Zarubin   G+  
1    271 +5

Комментарии ()

    Вы должны авторизоваться, чтобы оставлять комментарии.