Перейти к содержимому


Установка Виджета Пунктов Выдачи Заказа Сдэк


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 12

#1 Firefly

Firefly

    Активный участник

  • Модераторы
  • 3 810 сообщений

Отправлено 27 Апрель 2020 - 10:48

Виджет пунктов выдачи заказа СДЭК

Основные возможности виджета:
  • Выбор города и отображение списка ПВЗ для него
  • Возможность выбора покупателем ПВЗ с передачей данных в соответствующее поле в форме оформления заказа
  • Вывод детальной информации для каждого ПВЗ
1) Если Вы еще не создали вариант доставки с именем СДЭК, это возможно сделать в разделе Настройки - Доставка.

2) Далее Вам необходимо получить в Личном кабинете СДЭК API-логин и пароль для интеграции. Эти настройки нужно ввести на странице:

https://site.ru/admin/settings_delivery_sdek

*site.ru замените на Ваш домен

3) Для использования виджета, необходимо получить АПИ-ключ Яндекс.Карт. В противном случае, виджет не будет отображаться. Зайдите на страницу Кабинета Разработчика и нажмите кнопку Подключить API. Во всплывающем окне выберите сервис «JavaScript API и HTTP Геокодер».

4) В самый конец шаблона main.css нужно добавить код:

#cdek-map {width:800px;height:600px;display:none;max-width:100%;}

5) В шаблон Быстрый заказ после строки:

<form action="{ORDER_STAGE_CONFIRM_WITHOUT_DOMAIN_URL}" method="post" id="quickform">

нужно добавить строку:

<div id="cdek-map"></div>

6) Для установки виджета перейдите в раздел Сайт - Редактор шаблонов - HTML и добавьте код перед </head>:
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/@cdek-it/widget@3" charset="utf-8"></script>

7) Далее перейдите в шаблон main.js (в блоке Скрипты) и найдите код:
$('.mainSelect').change(function(){
	 selectedDelId = $(this).find('option:selected').attr('delid');

После него добавьте код, где укажите Ваш идентификатор варианта доставки вместо стандартного 449755* и вместо ключа b8f784d8-2fe9-4a5b-bcdc-9534900a220c укажите Ваш ключ от Яндекс.Карт:

// Запускаем виджет СДЭК при выборе варианта доставки с указанным id
if (selectedDelId === '449755') {
var pochta = $('#cdek-map');
$.fancybox.open({
src: pochta,
type: 'inline',
clickSlide : 'false',
clickOutside : 'false',
touch: false

});
new window.CDEKWidget({
from: {
country_code: 'RU',
city: 'Новосибирск',
postal_code: 630009,
code: 270,
address: 'ул. Большевистская, д. 101',
},
root: 'cdek-map',
apiKey: 'b8f784d8-2fe9-4a5b-bcdc-9534900a220c',
canChoose: true,
servicePath: '/delivery/sdek',
hideFilters: {
have_cashless: false,
have_cash: false,
is_dressing_room: false,
type: false,
},
hideDeliveryOptions: {
office: false,
door: true,
},
debug: false,

defaultLocation: "Москва",
lang: 'rus',
currency: 'RUB',
tariffs: {
office: [234, 136, 138],
door: [233, 137, 139],
},
onReady() {
//alert('Виджет загружен');

},
onCalculate() {
alert('Расчет стоимости доставки произведен');
},
onChoose(wat,tariff,address) {
//alert('Доставка выбрана');
$('#quickDeliveryComment').val(
'Выбран пункт выдачи заказа СДЭК: г.' + address.city + ', ' + address.address
);

$.fancybox.close();
},
});
} else {
	 $('#quickDeliveryComment').val('');
};

* В этом коде, как пример, добавлен идентификатор варианта доставки 449755. Свой id можно получить в разделе Настройки - Доставка внутри варианта доставки в URL адресе. Подробнее можно увидеть на скриншоте:
cdek.jpg

На стадии оформления заказа при выборе варианта доставки СДЭК данные будут подставляться в поле "Комментарий" к заказу.

#2 admin

admin

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 505 сообщений
  • ГородСамара

Отправлено 17 Март 2021 - 16:31

Просмотр сообщенияFirefly (27 Апрель 2020 - 10:48) писал:

Виджет пунктов выдачи заказа СДЭК

Основные возможности виджета:
  • Выбор города и отображение списка ПВЗ для него
  • Возможность выбора покупателем ПВЗ с передачей данных в соответствующее поле в форме оформления заказа
  • Вывод детальной информации для каждого ПВЗ
Если Вы еще не создали вариант доставки с именем СДЭК, это возможно сделать в разделе Настройки - Доставка.

Для установки виджета перейдите в раздел Сайт - Редактор шаблонов - HTML и добавьте код перед </head>:
<script id="ISDEKscript" type="text/javascript" src="https://widget.cdek.ru/widget/widjet.js"></script>

Далее перейдите в шаблон main.js (в блоке Скрипты) и найдите код:
$('.mainSelect').change(function(){
	 selectedDelId = $(this).find('option:selected').attr('delid');

После него добавьте код, где укажите Ваш идентификатор варианта доставки вместо стандартного 449755*:
// Запускаем виджет СДЭК при выборе варианта доставки с указанным id
if (selectedDelId === '449755') {
	 var widjet = new ISDEKWidjet ({
	 path: 'https://widget.cdek.ru/widget/scripts/',
	 choose: true,
	 defaultCity: 'Москва', // стандартный город на карте
	 cityFrom: 'Москва', // из какого города будет идти доставка
	 country: 'Россия', // можно выбрать страну, для которой отображать список ПВЗ
	 popup: true,
	 onChoose: onChoose,
	 hidedelt: true,
	 apikey: 'YANDEX_API_KEY' // ключ для корректной работы Яндекс.Карт, получить необходимо тут (https://developer.tech.yandex.ru/?from=club)
	 });
	
	 function onChoose(wat) {
		 $('#quickDeliveryComment').val(
			 'Выбран пункт выдачи заказа СДЭК ' + wat.id + "\n" +
			 'Срок: ' + wat.term + " дн.\n" +
			 'Город: ' + wat.cityName + ', Код города: ' + wat.city
		 );
	 }
	
	 setTimeout(function(){
	 widjet.open();
	 }, 1000);
} else {
	 $('#quickDeliveryComment').val('');
};

* В этом коде, как пример, добавлен идентификатор варианта доставки 449755. Свой id можно получить в разделе Настройки - Доставка внутри варианта доставки в URL адресе. Подробнее можно увидеть на скриншоте:
Прикрепленный файл cdek.jpg

На стадии оформления заказа при выборе варианта доставки СДЭК данные будут подставляться в поле "Комментарий" к заказу.

Если в передаваемых данных в комментарий к заказу нужны адрес и как добраться, то после кода:
			 'Выбран пункт выдачи заказа СДЭК ' + wat.id + "\n" +

С новой строки добавьте код:
						 'Адрес: ' + wat.PVZ.Address + "\n" +
						 'Как добраться: ' + wat.PVZ.AddressComment + "\n" +

Добрый день
Помогите что не так, у меня не работает виджет
SL-171870

#3 Foxis_10

Foxis_10

    Продвинутый пользователь

  • Модераторы
  • 65 сообщений

Отправлено 18 Март 2021 - 16:58

Здравствуйте. Удалите вставленный в main.js код.
Для Маркетплейс в шаблоне main.js после строки

let fz = $($('.zone__radio[deliveryid='+val+']')[0]);

добавьте этот код

if (val=446482)
	{ var widjet = new ISDEKWidjet ({
		 path: 'https://widget.cdek.ru/widget/scripts/',
		 choose: true,
		 defaultCity: 'Москва', // стандартный город на карте
		 cityFrom: 'Москва', // из какого города будет идти доставка
		 country: 'Россия', // можно выбрать страну, для которой отображать список ПВЗ
		 popup: true,
		 onChoose: onChoose,
		 hidedelt: true,
		 apikey: 'YANDEX_API_KEY' // ключ для корректной работы Яндекс.Карт, получить необходимо тут (https://developer.tech.yandex.ru/?from=club)
		 });

		 function onChoose(wat) {
				 $('#quickDeliveryComment').val(
						 'Выбран пункт выдачи заказа СДЭК ' + wat.id + "\n" +
						 'Срок: ' + wat.term + " дн.\n" +
						 'Город: ' + wat.cityName + ', Код города: ' + wat.city
				 );
		 }

		 setTimeout(function(){
		 widjet.open();
		 }, 1000);
} else {
		 $('#quickDeliveryComment').val('');
};


#4 admin

admin

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 505 сообщений
  • ГородСамара

Отправлено 18 Март 2021 - 17:27

Просмотр сообщенияFoxis_10 (18 Март 2021 - 16:58) писал:

Здравствуйте. Удалите вставленный в main.js код.
Для Маркетплейс в шаблоне main.js после строки

let fz = $($('.zone__radio[deliveryid='+val+']')[0]);

добавьте этот код

if (val=446482)
{ var widjet = new ISDEKWidjet ({
path: 'https://widget.cdek.ru/widget/scripts/',
choose: true,
defaultCity: 'Москва', // стандартный город на карте
cityFrom: 'Москва', // из какого города будет идти доставка
country: 'Россия', // можно выбрать страну, для которой отображать список ПВЗ
popup: true,
onChoose: onChoose,
hidedelt: true,
apikey: 'YANDEX_API_KEY' // ключ для корректной работы Яндекс.Карт, получить необходимо тут (https://developer.tech.yandex.ru/?from=club)
});

function onChoose(wat) {
$('#quickDeliveryComment').val(
'Выбран пункт выдачи заказа СДЭК ' + wat.id + "\n" +
'Срок: ' + wat.term + " дн.\n" +
'Город: ' + wat.cityName + ', Код города: ' + wat.city
);
}

setTimeout(function(){
widjet.open();
}, 1000);
} else {
$('#quickDeliveryComment').val('');
};
Данный виджет так же начинает показываться при нажатии на кнопку оформить заказ в корзине

#5 stasia

stasia

    Активный участник

  • Модераторы
  • 603 сообщений

Отправлено 18 Март 2021 - 19:42

Здравствуйте. Правки Вам добавили.

Скрыли Вам строку кода:

	  // $('.hiddenUpdate').html(data);


#6 VarimSamogon

VarimSamogon

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 80 сообщений
  • ГородМытищи

Отправлено 13 Апрель 2021 - 10:42

У меня нет таких кодов в main.js
Как встроить код, подскажите, плииииз

#7 Foxis_10

Foxis_10

    Продвинутый пользователь

  • Модераторы
  • 65 сообщений

Отправлено 13 Апрель 2021 - 16:50

Здравствуйте. Правки вам внесли. В main.js добавленный код вы можете найти через поиск по коду Ctrl+F

var fz = $($('.zone__radio[deliveryid='+val+']')[0]); 
	if (val== 376263)

У вас был зациклен код из-за этой строки в main.js (закомментировала вам её)

// .trigger('click');

#8 Лора

Лора

    Новичок

  • Пользователи
  • Pip
  • 2 сообщений

Отправлено 13 Июнь 2023 - 08:13

Не могу найти код $('.mainSelect').change(function(){
  selectedDelId = $(this).find('option:selected').attr('delid');  в шаблоне main.js

#9 stasia

stasia

    Активный участник

  • Модераторы
  • 603 сообщений

Отправлено 13 Июнь 2023 - 11:25

Просмотр сообщенияЛора (13 Июнь 2023 - 08:13) писал:

Не могу найти код $('.mainSelect').change(function(){
  selectedDelId = $(this).find('option:selected').attr('delid');  в шаблоне main.js


Здравствуйте.
Вам нужно найти данный код в шаблоне main.js (в блоке Скрипты):
// Выбор доставки и оплаты
function orderScriptsSelect() {
// Выбор доставки
$('.delivery__select select').change(function(){
var selectedDelId = $(this).find('option:selected').attr('delid');
И после него добавить скрипт по инструкции.

#10 skoer

skoer

    Новичок

  • Пользователи
  • Pip
  • 1 сообщений

Отправлено 15 Февраль 2024 - 21:45

здравствуйте, при попытке найти код main.jss не находит такого кода и дальнейшее перемещение кода из инструкции невозможно.

#11 stasia

stasia

    Активный участник

  • Модераторы
  • 603 сообщений

Отправлено 16 Февраль 2024 - 20:27

Просмотр сообщенияskoer (15 Февраль 2024 - 21:45) писал:

здравствуйте, при попытке найти код main.jss не находит такого кода и дальнейшее перемещение кода из инструкции невозможно.

Здравствуйте. Уточните номер Вашего Аккаунта, спасибо.

#12 VseHorosho

VseHorosho

    Новичок

  • Пользователи
  • Pip
  • 4 сообщений

Отправлено 25 Июль 2024 - 22:10

Просмотр сообщенияЛора (13 Июнь 2023 - 08:13) писал:

Не могу найти код $('.mainSelect').change(function(){
  selectedDelId = $(this).find('option:selected').attr('delid');  в шаблоне main.js

Он находится в page-order.js

#13 VseHorosho

VseHorosho

    Новичок

  • Пользователи
  • Pip
  • 4 сообщений

Отправлено 26 Июль 2024 - 01:04

В общем пишу иструкцию для добавления актуального виджета от СДЭК.

С настройкой самого виджета можно ознакомиться в официальном репозитории на гитхабе.

Первым шагом для подключения виджета нужно вставить его код

<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/@cdek-it/widget@3" charset="utf-8"></script>

В HTML в редакторе шблона перед </head>

Далее в редакторе шаблона в файле page-order.js ищем строку
selectedDelId = $(this).find('option:selected').attr('delid');

И вставлем следующий код
if (selectedDelId === 'тут код способа доставки') {
		$('#cdek-map').show(); // Показ элемента
		if (typeof CDEKWidget === 'function') {
	  new window.CDEKWidget({
						  from: {
							country_code: 'RU',
							city: 'Новосибирск',
							postal_code: 630009,
							code: 270,
							address: 'ул. Большевистская, д. 101',
						  },
						  root: 'cdek-map',
						  apiKey: 'API Яндекса',
						  canChoose: true,
						  servicePath: 'https://bedsets.ru/service.php',
						  hideFilters: {
							have_cashless: false,
							have_cash: false,
							is_dressing_room: false,
							type: false,
						  },
						  hideDeliveryOptions: {
							office: false,
							door: false,
						  },
						  debug: false,
						  goods: [
							{
							  width: 10,
							  height: 10,
							  length: 10,
							  weight: 10,
							},
						  ],
						  defaultLocation: [55.0415, 82.9346],
						  lang: 'rus',
						  currency: 'RUB',
						  tariffs: {
							office: [234, 136, 138],
							door: [233, 137, 139],
						 
						  },
						});
		} else {
	  $('#cdek-map').hide(); // Скрыть элемент, если не выбран нужный способ доставки
	}
	
	}


Затем через редактор шаблона в файле Быстрый заказ вставляем строку

<div id="cdek-map" style="display:none; width:700px; height:600px;"></div>

Готово!

P.S. Если кто то подскажет как реализовать с помощью кода добавление цены доставки к общей сумме заказа буду благодарен.




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных