Для начала потребуется разместить на странице код подключения виджета СДЭКа
<script type="text/javascript" src="https://widget.cdek.ru/widget/widjet.js" id="ISDEKscript"> </script>
Далее требуется его инициализация с начальными параметрами для расчета:
<script type="text/javascript">
var widjet = new ISDEKWidjet({
defaultCity: 'Москва', //какой город отображается по умолчанию
cityFrom: 'Домодедово', // из какого города будет идти доставка
country: 'Россия', // можно выбрать страну, для которой отображать список ПВЗ
link: false,
popup: true,
onChoose: onChoose,
onChooseProfile: onChooseProfile,
});
/* Добавить обработку событий для onChoose и onChooseProfile (описана ниже) */
/* Добавить отображение кнопки Выбрать ПВЗ (описана ниже) */
</script>
При инициализации используются две функции: onChoose и onChooseProfile, которые вызываются когда в виджете СДЭКа выбран ПВЗ или выбран тип курьерской доставки. В нашем случае эти функции должны будут добавлять в корзину произвольный товар с надванием "Доставка СДЭК" и стоимостью, которую рассчитает виджет.
function onChoose(wat) {
self_name = 'Доставка СДЭК';
self_desc = 'Доставка в пункт выдачи ' + wat.PVZ.Name + ' / срок ' + wat.term + ' дн. ';
self_price = Math.round(Number.parseInt(wat.price));
self_img = 'https://easynetshop.ru/assets/images/cdek_logo.jpg'
easynetshop_self(self_name, self_price, self_desc, self_img);
widjet.close();
}
function onChooseProfile(wat) {
self_name = 'Доставка СДЭК';
self_desc = 'Доставка курьером ';
self_price = Math.round(Number.parseInt(wat.price));
self_img = 'https://easynetshop.ru/assets/images/cdek_logo.jpg'
easynetshop_self(self_name, self_price, self_desc, self_img);
widjet.close();
}
Остается добавить в форму заказа кнопку, которая будет запускать отображения виджета СДЭКа. Причем это кнопка должна быть только в том случае, если доставку мы еще не добавляли в заказ. А также при остутствии выбранного ПВЗ можно заблокировать возможность оформления заказа.
document.addEventListener("EasyNetShopModalOpened", function(event) {
var easynetshop_cdek_delivery_exists = false;
ens_jQuery('.easynetshop-goodtitle-name').each(function(){
if (ens_jQuery(this).html() == 'Доставка СДЭК') {
ens_jQuery(this).parents('.easynetshop-row').addClass('easynetshop-cdek-delivery-item').find('.easynetshop-center input, .easynetshop-center button').hide();
ens_jQuery('.easynetshop-doorder').removeAttr("disabled");
easynetshop_cdek_delivery_exists = true;
}
});
if (!easynetshop_cdek_delivery_exists) {
ens_jQuery('.easynetshop-goods').find('.easynetshop-row:last').before('<a href="javascript:void(0);" class="btn-ens-style" onclick="widjet.open()">Добавить доставку СДЭК</a>');
ens_jQuery('.easynetshop-doorder').attr("disabled", "true");
}
});
При одновременном отображении двух активных виджетов (корзины и выбора пункта выдачи заказа) возможно, что один будет перекрывать второй, поэтому с помощью стилей устанавливаем значение z-index для приоритетного виджета СДЭКа
<style> .CDEK-widget__popup-mask { z-index: 9999; } </style>