ms_CDEK2 возвращается!
Знаю, все этого ждали и это произошло, компонент снова доступен на modstore. Пользуйтесь. Список изменений под катом
1. Удалены устаревшие файлы, настройки и лексиконы.
2. Сниппет ms_CDEK2 больше не нужен. Компонент инициализируется автоматически на страницах с указанным в системных настройках шаблонами.
3. Виджет, который так любезно разработал для нас СДЭК, я тоже выкинул, поскольку он имел склонность грузиться долго или не грузиться вообще. Вместо него я написал свою простенькую инициализацию карты с минимальным набором функций, но зато на третьей версии API Яндекс.Карт и с возможностью управлять картой как душе угодно, если вы шарите за JS и работу с картами от Яндекса. В целом, можно картой не пользоваться вовсе, пусть пользователь выбирает из обычного списка)))
4. Поскольку для расчёта стоимости доставки требуется только почтовый индекс, использовать автодополнения от СДЭК бессмысленно, поэтому был настроен автокомплит адреса от DaData. Он бесплатный до 10000 запросов в сутки.
5. Страна отправителя указывается в системных настройках. Страна получателя передаётся через стандартное поле адреса — country и для получения кода страны используется сервис DaData, если код не будет получен компонент использует код отправителя.
6. Логи больше не выводятся в журнал ошибок Modx, а пишутся в директорию core/components/ms_cdek2/services/logs.
7. Добавлены события в как системные, так и браузерные для возможности дополнять и изменять логику работы.
8. Компонент теперь требует обязательного установленного SendIt.
9. Расчёт стоимости происходит по коду тарифа, больше никаких переборов и гаданий. Код тарифа должен быть указан либо в описании способа доставки, либо на вкладке Параметры в интерфейсе настройки способа оплаты.
10. Для ускорения работы и экономии запросов используется серверное и браузерное кеширование.
Приятного использования!
1. Удалены устаревшие файлы, настройки и лексиконы.
2. Сниппет ms_CDEK2 больше не нужен. Компонент инициализируется автоматически на страницах с указанным в системных настройках шаблонами.
3. Виджет, который так любезно разработал для нас СДЭК, я тоже выкинул, поскольку он имел склонность грузиться долго или не грузиться вообще. Вместо него я написал свою простенькую инициализацию карты с минимальным набором функций, но зато на третьей версии API Яндекс.Карт и с возможностью управлять картой как душе угодно, если вы шарите за JS и работу с картами от Яндекса. В целом, можно картой не пользоваться вовсе, пусть пользователь выбирает из обычного списка)))
4. Поскольку для расчёта стоимости доставки требуется только почтовый индекс, использовать автодополнения от СДЭК бессмысленно, поэтому был настроен автокомплит адреса от DaData. Он бесплатный до 10000 запросов в сутки.
5. Страна отправителя указывается в системных настройках. Страна получателя передаётся через стандартное поле адреса — country и для получения кода страны используется сервис DaData, если код не будет получен компонент использует код отправителя.
6. Логи больше не выводятся в журнал ошибок Modx, а пишутся в директорию core/components/ms_cdek2/services/logs.
7. Добавлены события в как системные, так и браузерные для возможности дополнять и изменять логику работы.
8. Компонент теперь требует обязательного установленного SendIt.
9. Расчёт стоимости происходит по коду тарифа, больше никаких переборов и гаданий. Код тарифа должен быть указан либо в описании способа доставки, либо на вкладке Параметры в интерфейсе настройки способа оплаты.
10. Для ускорения работы и экономии запросов используется серверное и браузерное кеширование.
Приятного использования!
Комментарии: 63
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
он же там потом разрастаться будет и никто из разработчиков про это помнить не будет.
Хочется отдельный файл лога — почему не положить рядом со стандартным errors.log что-то типа
?
Кто ещё не нажал кнопочку «Отправить деньги» в разделе «Поблагодарить автора» под анонсом поста — самое время всем это сделать!
Без нее корзина ложиться наглухо. Даже если никакие доставки сдек не включены.
Теперь буду знать, что в степени бардака в програмировании нам есть куда стремиться :-).
Только карта ПВЗ так и не заработала. В консоле ошибки
Понять, где должна происходить инициализации ymaps3, не получилось. Баг разработчика какой-то.
@Артур Шевченко поправь плиз.
Если вы используете Java Script API версии 3.0, необходимо настроить ограничения для API-ключа, чтобы API работали корректно. В предыдущих версиях это не обязательно, но рекомендуется сделать, чтобы защитить ключ.
Попробуйте прописать ограничения, может в этом причина.
yandex.ru/maps-api/docs/js-api/limit.html
Это очень странно, что такой выдающийся разработчик как ты не смог понять где происходит инициализация карты, учитывая, что в консоли справа написано в каком файле ошибка.
Я в файле core\components\minishop2\model\minishop2\msdeliveryhandler.class.php
Закоментировал $this->modx->getOption('log_deprecated')
И заработало. Не понятно Эта ошибка из-за наших особенностей или что-то неправильно в msdeliveryhandler. По идее файл же не класс и $this-> вообще не должен присутствовать О_О.
У нас api-maps.yandex.ru/v3/?apikey=*** заработало когда поставили ограничение по домену.
У нас что-то при установке не прописалось. Раздела minishop2\ms2_delivery_cdekhandler нет в системных настройках. Подскажи что там должно быть?
А то корзина ложиться и не понятно из-за чего. Мы 3 часа пропарились из-за этого.
Можно ли выбрать разные способы, например экспресс или обыная?
Также может в демо не обновлена версия, но у меня работает пока немного странно: если я 1 раз выбрал ПВЗ, то потом я не могу уже никак выбрать другой, даже после обновления страницы. Ну и не всегда удобно выбрать без карты (понятно, что карта это доп нагрузка, но можно и в модалку положить — только мнение).
Можно. Для этого нужно указать соответствующие номера тарифов в системных настройках ms_cdek2_tariffs и в ms_cdek2_deliveries.
Возможно вы смотрели в процессе доработок.
Если положить карту в модалку это никак не снизит нагрузку на сеть и не увеличит скорость загрузки страницы.
В Журнале:
Хотя, «Размер упаковки по умолчанию» заполнен.
А для чего его заполнять, если есть размер упаковки по умолчанию?
137 тариф
Журнал
ms_CDEK2
2.4.4-pl
Переустановлено
26-05-2025, 21:58
Если в настройках 30х30х30 системных ms_cdek2_default_size не пойму никак…
А в файле core/components/ms_cdek2/services/custom/MsCdek2.php
Может, в этом дело?
Какой-то расчет стал происходить. Насчет его правильности — не знаю пока.
Вопрос: а SendIt сильно там нужен? Как бы, если SendIt не используется, не особо хочется тянуть лишний компонент…
Помогла эта галочка
Но клиенты у кого за неделю скрипты закешировались это не поймут.
@Артур Шевченко можешь механизм обновления скриптов mscdek и sendit предусмотреть?
У Василия в минишопе обновления версии js скриптов через гет-параметы встроенно. Меняется версия минишоп — меняется гет-параметр. Я так же делаю. Тебе нужно подумать, чтобы при обновлении js они автоматически в браузере обновлялись. А то сделаешь ты обновление mscdek через полгода и на всех сайтах у их постоянных клиентов mscdek отвалится и владельцы сайтов потеряют клиентов. Веская причина?
Искал в чем причина ошибки 4 часа. ctrl+shift+r я всегда делаю и стем что оно не срабатывает первый раз столкнулся. Так что даже не подозревал, что скрипты старые в браузере. Пришлось дебажить и изучать mscdek и sendit. Как они работают. В итоге разобрался, что header x-sipreset не верный, нашел где он отправляется, а потом уже проверил что за js в установочном пакете.
4 часа дебажить такую ошибку не так уж и долго :-).
Надеюсь, что ты все-таки воспримешь это от меня как фидбек :-)
Чтобы не задавать каждому товару размер упаковки, а просто всей посылке из корзины задать размеры по умолчанию.
Заявлено, что компонент работает на PHP 7.4, но по факту это не так.
А у меня сайт работает именно на 7.4 и обновить нельзя, т.к. перестанут работать некоторые старые важные компноненты.
СДЭК недавно поменял что-то в своем API, и теперь компонент версии 2.2.0-beta3 не работает, т.к. там происходит обращение к устаревшему методу:
https://api.cdek.ru/city/getListByTerm/jsonp.php?q=%D0%A1%D0%B0%D0%BD%D0%BA%D1%82-%D0%9F%D0%B5%D1%82%D0%B5%D1%80%D0%B1%D1%83%D1%80%D0%B3&name_startsWith=%D0%A1%D0%B0%D0%BD%D0%BA%D1%82-%D0%9F%D0%B5%D1%82%D0%B5%D1%80%D0%B1%D1%83%D1%80%D0%B3
В итоге если обновить компонент, он не будет работать из-за использования современных конструкций языка PHP (нужна 8.1 или выше), а если не обновлять, он не будет работать из-за использования устаревших методов API СДЭКа. Что посоветуете?
Из минусов — можно потерять возможность обновлять некоторые старые компоненты (правда они особо и не обновляются)
Ну и затратно может быть.
А как вы поняли, что на 7.4 не работает? может я что-то не протестировал
Потом была проблема, что sendit меня опозновал как бота при тестах и просил перегрузить страницу. Видите ли слишком прямо я курсор вожу по экрану)
Недавно я опять нашел 500 ошибку, когда выбираешь населенный пункт, в котором нет пвз и выбираешь пвз доставку, то в консоли появляется 500 ошибка при аякс запросе.
И соответственно, если человек ушел со страницы оф. заказа в тот момент, когда у него появилась такая ошибка, то при след заходе в оф заказа падает сразу в 500. Очистка кеша/истории браузера помогает (не просто ctrl+f5).
Я пока склонялся к идее, что это чисто мои проблемы (в оф заказа много разных модулей добавлено...) и сейчас буду тестить максимально чистый вариант, без всего лишнего. Но первым делом проверю смену версии php, вдруг правда поможет.
И в демке на сайте такой проблемы нет, там при отсутствии пвз пишется текст, что его нет, всплывают сообщения сендит и в консоли 500 не наблюдается.
Версия минишоп была 2.5 и обновления дальше 2.5 не видит. И установлена она была с modx.com, а не modstore. Сменил на modstore — предлагает обновления.
Обновлю, посмотрю модуль будет работать или нет
ms_CDEK2 2.2.0-beta2 на miniShop2 2.8.3-pl
может есть более ранние версии mscdek которые всё еще работают?