Вставка Виджетов
#41
Отправлено 16 Декабрь 2018 - 15:15
Пожалуйста, помогите, скорей разобраться с подстановками!
У меня виджет располагается в корзине - это самое ближайшее к оформлению заказа место, куда я смогла его приткнуть, чтобы покупатели его видели, т.к. в теле ajax оформления оно не работало.. Надеюсь, не будет проблем с глобализацией переменных для подставления в поля заказа?
Напоминаю, данные приходят в функцию window.grastinPvzWidgetCallback вот в таком виде (на примере первого попавшегося пвз): {"deliveryType":"pvz","partnerId":"boxberry","currentId":"7a9ab22c-a271-11e8-a532-0050569b6f79","pvzData":{"title":"Пенза Компрессорная_5845_С","name":"440015, Пенза г, Компрессорная ул, д.13"},"cityTo":"ПЕНЗА","cityFrom":"МОСКВА","cost":287,"weight":1000,"assessed":0,"ko":0}
Итак, нужно подставить в поля Быстрого заказа (данные из примера выше):
1) Город - "cityTo":"ПЕНЗА"
2) Адрес - "partnerId":"boxberry", "pvzData":{"title":"Пенза Компрессорная_5845_С","name":"440015, Пенза г, Компрессорная ул, д.13"}
3) Цена доставки - "cost":287
И следом ещё нужна обработка по условию:
Если "deliveryType":"pvz", то поля дата и время доставки к чертям скрыть (если начну объяснять причину, пойдёт ненормативная лексика ..коллеги поймут)
А, если "deliveryType":"courier", то не скрывать
#42
Отправлено 18 Декабрь 2018 - 15:46
лиса (16 Декабрь 2018 - 15:15) писал:
Пожалуйста, помогите, скорей разобраться с подстановками!
У меня виджет располагается в корзине - это самое ближайшее к оформлению заказа место, куда я смогла его приткнуть, чтобы покупатели его видели, т.к. в теле ajax оформления оно не работало.. Надеюсь, не будет проблем с глобализацией переменных для подставления в поля заказа?
Напоминаю, данные приходят в функцию window.grastinPvzWidgetCallback вот в таком виде (на примере первого попавшегося пвз): {"deliveryType":"pvz","partnerId":"boxberry","currentId":"7a9ab22c-a271-11e8-a532-0050569b6f79","pvzData":{"title":"Пенза Компрессорная_5845_С","name":"440015, Пенза г, Компрессорная ул, д.13"},"cityTo":"ПЕНЗА","cityFrom":"МОСКВА","cost":287,"weight":1000,"assessed":0,"ko":0}
Итак, нужно подставить в поля Быстрого заказа (данные из примера выше):
1) Город - "cityTo":"ПЕНЗА"
2) Адрес - "partnerId":"boxberry", "pvzData":{"title":"Пенза Компрессорная_5845_С","name":"440015, Пенза г, Компрессорная ул, д.13"}
3) Цена доставки - "cost":287
И следом ещё нужна обработка по условию:
Если "deliveryType":"pvz", то поля дата и время доставки к чертям скрыть (если начну объяснять причину, пойдёт ненормативная лексика ..коллеги поймут)
А, если "deliveryType":"courier", то не скрывать
Уточните, при клике на что должен появляться виджет грастин.
#43
Отправлено 18 Декабрь 2018 - 23:29
Ирина345 (18 Декабрь 2018 - 15:46) писал:
Здравствуйте, передавать стоимость пункта выдачи, можно только в виде текстовой информации и цену доставки менять нельзя, она формируется в разделе Настройки-Доставка и не меняется.
Уточните, при клике на что должен появляться виджет грастин.
Да ему не нужно, собственно, появляться) Он уже, как я говорила выше, приткнут в самом ближайшем по логике месте, где ему технически позволено отображаться - в корзине, что визуально находится на одной странице с оформлением заказа.
Ну, ход мысли такой - покупатель, попадая в корзину, сначала тыкает на виджете в желаемый пункт выдачи, потом жмёт кнопку оформить заказ. Открывается форма оформления заказа, где уже подставлена в поля город и адрес инфа, пришедшая из функции виджета. Как-то так..
Относительно цены это прям печальная печаль, я чуть не плачу ((( Но, раз такие дела, тогда помогите хотя бы реализовать такой вариант:
https://forum.storel...дающим-списком/
#44
Отправлено 11 Январь 2019 - 03:11
Зайдите в раздел Сайт - Редактор шаблонов - Быстрый заказ - найдите:
{% IFNOT order_delivery.zone_list_empty %} {% FOR zone_list %} <div class="zones"> <!-- Заголовок внутри метода доставки, появляется только один раз--> {% IF order_delivery.zone_list.index=1 %} <label for="deliveryId{order_delivery.ID}" class="zones-header"><b>Выберите:</b></label><br /> {% ENDIF %} <input type="radio" class="deliveryZoneRadio inFastOrder" deliveryid="{order_delivery.ID}" id="deliveryZoneId{order_delivery.zone_list.ID}" name="form[delivery][zone_id]" value="{order_delivery.zone_list.ID}" {% IF order_delivery.zone_list.ID = ORDER_FORM_DELIVERY_ZONE_ID %} checked="checked" rel="true" {% ENDIF %} /> <label class="orderStageDeliveryZoneLabel" for="deliveryZoneId{order_delivery.zone_list.ID}"> <span class="zone_list">{order_delivery.zone_list.NAME}</span> <span class="deliveryZonePrice">{order_delivery.zone_list.END_PRICE | money_format}</span> </label> </div> {% ENDFOR %} {% ENDIF %}
замените на:
{% IFNOT order_delivery.zone_list_empty %} <select data-deliveryid="{order_delivery.ID}" name="form[delivery][zone_id]" {% IF order_delivery.zone_list.ID = ORDER_FORM_DELIVERY_ZONE_ID %}class="required"{% ENDIF %}> {% FOR zone_list %} <option value="{order_delivery.zone_list.ID}" data-price="{order_delivery.zone_list.END_PRICE | number_format("0", ",", " ")}" {% IF order_delivery.zone_list.ID=ORDER_FORM_DELIVERY_ZONE_ID %}selected="selected"{% ENDIF %}> {order_delivery.zone_list.NAME} </option> {%ENDFOR%} </select> {% ENDIF %} <div style="display:none;"> {% IFNOT order_delivery.zone_list_empty %} {% FOR zone_list %} <div class="zones"> <!-- Заголовок внутри метода доставки, появляется только один раз--> {% IF order_delivery.zone_list.index=1 %} <label for="deliveryId{order_delivery.ID}" class="zones-header">Зоны доставки</label><br /> {% ENDIF %} <input type="radio" class="deliveryZoneRadio inFastOrder" deliveryid="{order_delivery.ID}" id="deliveryZoneId{order_delivery.zone_list.ID}" name="form[delivery][zone_id]" value="{order_delivery.zone_list.ID}" {% IF order_delivery.zone_list.ID = ORDER_FORM_DELIVERY_ZONE_ID %} checked="checked" rel="true" {% ENDIF %} /> <label class="orderStageDeliveryZoneLabel" for="deliveryZoneId{order_delivery.zone_list.ID}"> {order_delivery.zone_list.NAME} <span class="deliveryZonePrice">{order_delivery.zone_list.END_PRICE | money_format}</span> </label> </div> {% ENDFOR %} {% ENDIF %} </div>
далее зайдите в main.js - найдите:
// Скрипты для Быстрого заказа function quickOrderScripts(){ $(document).ready(function(){
после него вставьте:
$('.orderStageDeliveryListTable select').change(function(){ var value = $(this).find('option:selected').attr('data-price'), zone=$(this).find('option:selected').val(); $('tbody[rel="' + $(this).attr('data-deliveryid') + '"] .deliveryRadio').click(); $('tbody[rel="' + $(this).attr('data-deliveryid') + '"] .orderStageDeliveryDefaultPrice .num').text(value).parent().parent().show(); $('tbody[rel="' + $(this).attr('data-deliveryid') + '"] .orderStageDeliveryZonePrice:visible').hide(); $('tbody[rel="' + $(this).attr('data-deliveryid') + '"] .zones input[value="' + zone + '"]').trigger('click'); });
#45
Отправлено 11 Январь 2019 - 03:32
А как насчёт этого?
лиса (16 Декабрь 2018 - 15:15) писал:
1) Город - "cityTo":"ПЕНЗА"
2) Адрес - "partnerId":"boxberry", "pvzData":{"title":"Пенза Компрессорная_5845_С","name":"440015, Пенза г, Компрессорная ул, д.13"}
3) Цена доставки - "cost":287
И следом ещё нужна обработка по условию:
Если "deliveryType":"pvz", то поля дата и время доставки к чертям скрыть (если начну объяснять причину, пойдёт ненормативная лексика ..коллеги поймут)
А, если "deliveryType":"courier", то не скрывать
#46
Отправлено 12 Январь 2019 - 11:46
Vaccina (11 Январь 2019 - 03:11) писал:
Зайдите в раздел Сайт - Редактор шаблонов - Быстрый заказ - найдите:
{% IFNOT order_delivery.zone_list_empty %} {% FOR zone_list %} <div class="zones"> <!-- Заголовок внутри метода доставки, появляется только один раз--> {% IF order_delivery.zone_list.index=1 %} <label for="deliveryId{order_delivery.ID}" class="zones-header"><b>Выберите:</b></label><br /> {% ENDIF %} <input type="radio" class="deliveryZoneRadio inFastOrder" deliveryid="{order_delivery.ID}" id="deliveryZoneId{order_delivery.zone_list.ID}" name="form[delivery][zone_id]" value="{order_delivery.zone_list.ID}" {% IF order_delivery.zone_list.ID = ORDER_FORM_DELIVERY_ZONE_ID %} checked="checked" rel="true" {% ENDIF %} /> <label class="orderStageDeliveryZoneLabel" for="deliveryZoneId{order_delivery.zone_list.ID}"> <span class="zone_list">{order_delivery.zone_list.NAME}</span> <span class="deliveryZonePrice">{order_delivery.zone_list.END_PRICE | money_format}</span> </label> </div> {% ENDFOR %} {% ENDIF %}
замените на:
{% IFNOT order_delivery.zone_list_empty %} <select data-deliveryid="{order_delivery.ID}" name="form[delivery][zone_id]" {% IF order_delivery.zone_list.ID = ORDER_FORM_DELIVERY_ZONE_ID %}class="required"{% ENDIF %}> {% FOR zone_list %} <option value="{order_delivery.zone_list.ID}" data-price="{order_delivery.zone_list.END_PRICE | number_format("0", ",", " ")}" {% IF order_delivery.zone_list.ID=ORDER_FORM_DELIVERY_ZONE_ID %}selected="selected"{% ENDIF %}> {order_delivery.zone_list.NAME} </option> {%ENDFOR%} </select> {% ENDIF %} <div style="display:none;"> {% IFNOT order_delivery.zone_list_empty %} {% FOR zone_list %} <div class="zones"> <!-- Заголовок внутри метода доставки, появляется только один раз--> {% IF order_delivery.zone_list.index=1 %} <label for="deliveryId{order_delivery.ID}" class="zones-header">Зоны доставки</label><br /> {% ENDIF %} <input type="radio" class="deliveryZoneRadio inFastOrder" deliveryid="{order_delivery.ID}" id="deliveryZoneId{order_delivery.zone_list.ID}" name="form[delivery][zone_id]" value="{order_delivery.zone_list.ID}" {% IF order_delivery.zone_list.ID = ORDER_FORM_DELIVERY_ZONE_ID %} checked="checked" rel="true" {% ENDIF %} /> <label class="orderStageDeliveryZoneLabel" for="deliveryZoneId{order_delivery.zone_list.ID}"> {order_delivery.zone_list.NAME} <span class="deliveryZonePrice">{order_delivery.zone_list.END_PRICE | money_format}</span> </label> </div> {% ENDFOR %} {% ENDIF %} </div>
далее зайдите в main.js - найдите:
// Скрипты для Быстрого заказа function quickOrderScripts(){ $(document).ready(function(){
после него вставьте:
$('.orderStageDeliveryListTable select').change(function(){ var value = $(this).find('option:selected').attr('data-price'), zone=$(this).find('option:selected').val(); $('tbody[rel="' + $(this).attr('data-deliveryid') + '"] .deliveryRadio').click(); $('tbody[rel="' + $(this).attr('data-deliveryid') + '"] .orderStageDeliveryDefaultPrice .num').text(value).parent().parent().show(); $('tbody[rel="' + $(this).attr('data-deliveryid') + '"] .orderStageDeliveryZonePrice:visible').hide(); $('tbody[rel="' + $(this).attr('data-deliveryid') + '"] .zones input[value="' + zone + '"]').trigger('click'); });
Вообще не то получается (((((( Нужен не выпадающий список, а спойлер, при нажатии на который будет выпадать полный список адресов с переключателями.
#47
Отправлено 15 Январь 2019 - 06:45
Поняла вас =) В этом случае отмените изменения по моей последней инструкции, зайдите в раздел Сайт - Редактор шаблонов - Быстрый заказ - найдите:
{% FOR zone_list %} <div class="zones"> <!-- Заголовок внутри метода доставки, появляется только один раз--> {% IF order_delivery.zone_list.index=1 %} <label for="deliveryId{order_delivery.ID}" class="zones-header"><b>Выберите:</b></label><br /> {% ENDIF %} <input type="radio" class="deliveryZoneRadio inFastOrder" deliveryid="{order_delivery.ID}" id="deliveryZoneId{order_delivery.zone_list.ID}" name="form[delivery][zone_id]" value="{order_delivery.zone_list.ID}" {% IF order_delivery.zone_list.ID = ORDER_FORM_DELIVERY_ZONE_ID %} checked="checked" rel="true" {% ENDIF %} /> <label class="orderStageDeliveryZoneLabel" for="deliveryZoneId{order_delivery.zone_list.ID}"> <span class="zone_list">{order_delivery.zone_list.NAME}</span> <span class="deliveryZonePrice">{order_delivery.zone_list.END_PRICE | money_format}</span> </label> </div> {% ENDFOR %}
замените:
{% IFNOT order_delivery.zone_list_empty %} <div class="zone_block"> <!-- Заголовок внутри метода доставки, появляется только один раз--> <a class="zones-header"><b>Выберите зону доставки</b></a><br /> <div class="zone_list"> {% FOR zone_list %} <div class="zones"> <input type="radio" class="deliveryZoneRadio inFastOrder" deliveryid="{order_delivery.ID}" id="deliveryZoneId{order_delivery.zone_list.ID}" name="form[delivery][zone_id]" value="{order_delivery.zone_list.ID}" {% IF order_delivery.zone_list.ID = ORDER_FORM_DELIVERY_ZONE_ID %} checked="checked" rel="true" {% ENDIF %} /> <label class="orderStageDeliveryZoneLabel" for="deliveryZoneId{order_delivery.zone_list.ID}"> <span class="zone_list">{order_delivery.zone_list.NAME}</span> <span class="deliveryZonePrice">{order_delivery.zone_list.END_PRICE | money_format}</span> </label> </div> {% ENDFOR %} </div> </div> {% ENDIF %}
далее зайдите в main.js - найдите:
// Скрипты для Быстрого заказа function quickOrderScripts(){ $(document).ready(function(){
после него вставьте:
$('.zone_block .zone_list').hide(); $('.zone_block .zones-header').click(function(){ $('.zone_block .zone_list').hide(); $(this).closest('.zone_block').find('.zone_list').toggle('slow'); return false; });
лиса (16 Декабрь 2018 - 15:15) писал:
1) Город - "cityTo":"ПЕНЗА"
2) Адрес - "partnerId":"boxberry", "pvzData":{"title":"Пенза Компрессорная_5845_С","name":"440015, Пенза г, Компрессорная ул, д.13"}
3) Цена доставки - "cost":287
И следом ещё нужна обработка по условию:
Если "deliveryType":"pvz", то поля дата и время доставки к чертям скрыть (если начну объяснять причину, пойдёт ненормативная лексика ..коллеги поймут)
А, если "deliveryType":"courier", то не скрывать
Цену вставить в стоимость доставки не получится, ее можно добавить только в поля для заполнения, например, комментарий, устроит вас данный вариант?
#48
Отправлено 19 Январь 2019 - 15:53
Vaccina (15 Январь 2019 - 06:45) писал:
Поняла вас =) В этом случае отмените изменения по моей последней инструкции, зайдите в раздел Сайт - Редактор шаблонов - Быстрый заказ - найдите:
{% FOR zone_list %} <div class="zones"> <!-- Заголовок внутри метода доставки, появляется только один раз--> {% IF order_delivery.zone_list.index=1 %} <label for="deliveryId{order_delivery.ID}" class="zones-header"><b>Выберите:</b></label><br /> {% ENDIF %} <input type="radio" class="deliveryZoneRadio inFastOrder" deliveryid="{order_delivery.ID}" id="deliveryZoneId{order_delivery.zone_list.ID}" name="form[delivery][zone_id]" value="{order_delivery.zone_list.ID}" {% IF order_delivery.zone_list.ID = ORDER_FORM_DELIVERY_ZONE_ID %} checked="checked" rel="true" {% ENDIF %} /> <label class="orderStageDeliveryZoneLabel" for="deliveryZoneId{order_delivery.zone_list.ID}"> <span class="zone_list">{order_delivery.zone_list.NAME}</span> <span class="deliveryZonePrice">{order_delivery.zone_list.END_PRICE | money_format}</span> </label> </div> {% ENDFOR %}
замените:
{% IFNOT order_delivery.zone_list_empty %} <div class="zone_block"> <!-- Заголовок внутри метода доставки, появляется только один раз--> <a class="zones-header"><b>Выберите зону доставки</b></a><br /> <div class="zone_list"> {% FOR zone_list %} <div class="zones"> <input type="radio" class="deliveryZoneRadio inFastOrder" deliveryid="{order_delivery.ID}" id="deliveryZoneId{order_delivery.zone_list.ID}" name="form[delivery][zone_id]" value="{order_delivery.zone_list.ID}" {% IF order_delivery.zone_list.ID = ORDER_FORM_DELIVERY_ZONE_ID %} checked="checked" rel="true" {% ENDIF %} /> <label class="orderStageDeliveryZoneLabel" for="deliveryZoneId{order_delivery.zone_list.ID}"> <span class="zone_list">{order_delivery.zone_list.NAME}</span> <span class="deliveryZonePrice">{order_delivery.zone_list.END_PRICE | money_format}</span> </label> </div> {% ENDFOR %} </div> </div> {% ENDIF %}
далее зайдите в main.js - найдите:
// Скрипты для Быстрого заказа function quickOrderScripts(){ $(document).ready(function(){
после него вставьте:
$('.zone_block .zone_list').hide(); $('.zone_block .zones-header').click(function(){ $('.zone_block .zone_list').hide(); $(this).closest('.zone_block').find('.zone_list').toggle('slow'); return false; });
Получилось! Спасибо большое!)
Хотя, боюсь, не все покупатели смогут додуматься нажать на надпись выбора зоны.. Возможно сделать, чтобы список раскрывался при выборе переключателя типа доставки?
Цитата
Давайте реализуем остальные параметры, без цены.
Спасибо!
#49
Отправлено 22 Январь 2019 - 05:52
Зайдите в раздел Сайт - Редактор шаблонов - main.js - найдите:
$('.zone_block .zone_list').hide(); $('.zone_block .zones-header').click(function(){ $('.zone_block .zone_list').hide(); $(this).closest('.zone_block').find('.zone_list').toggle('slow'); return false; });
перед ним вставьте:
$('.deliveryRadio').click(function(){ $(this).closest('tbody').find('.zones-header').click(); }); $('.deliveryRadio').trigger('click');
Вам необходимо сгенерировать новый код виджета, так как в вашем отсутствует выбор места доставки:
https://grastin.ru/gen_new/
#50
Отправлено 09 Февраль 2019 - 22:38
Vaccina (22 Январь 2019 - 05:52) писал:
$('.zone_block .zone_list').hide(); $('.zone_block .zones-header').click(function(){ $('.zone_block .zone_list').hide(); $(this).closest('.zone_block').find('.zone_list').toggle('slow'); return false; });
перед ним вставьте:
$('.deliveryRadio').click(function(){ $(this).closest('tbody').find('.zones-header').click(); }); $('.deliveryRadio').trigger('click');
Теперь супер! То, что надо)
Vaccina (22 Январь 2019 - 05:52) писал:
https://grastin.ru/gen_new/
Не поняла.. Как отсутствует? Надо перейти на вкладку самовывоз - там будут пункты выдачи с их подробными данными на выбор..
#51
Отправлено 12 Февраль 2019 - 06:19
Простите неправильно поняла. Зайдите в раздел Сайт - Редактор шаблонов - main.js - найдите и удалите:
$(document).ready(function() { window.grastinPvzWidgetCallback = function(data){ $("#quickDeliveryCity").text(data.cityTo); console.log(data); } });
далее найдите:
// Скрипты для Быстрого заказа function quickOrderScripts(){
после него вставьте:
$(document).ready(function () { window.grastinPvzWidgetCallback = function (data) { $('#quickDeliveryCity').val(data.cityTo); $('#quickDeliveryAddress').text(data.pvzData.name); $('#quickDeliveryComment').text('Стоимость доставки:' + data.cost); console.log(data); } });
После данного изменения автоматически будут заполняться поля город, адрес, комментарий.
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных