Всем привет!
Недавно, реализовывая проект интернет-магазина на движке Ubercart, столкнулся с тем, что по дефолту на форме оформления заказа (cart/checkout) не предусмотрен такой вариант как Самовывоз.
Неделю я мучил поисковые системы в попытках найти готовое решение. Не нашел. В итоге решил задачу следующим образом:
1. Устанавливаем и активируем модуль "Extra Fields Checkout Pane"
2. Идем в настройки магазина "Страны и адреса" (admin/store/settings/countries/fields)
3. На вкладке "Поля адреса" жмем "Add an address field"
3.1 Задаем метку поля. Я обозвал поле "Способ получения заказа"
3.2 Задаем имя поля, в моем случае я задал имя "samvyvoz", а префикс "ucxf_" добавился автоматически. На выходе полное название поля получилось "ucxf_samvyvoz"
3.3 Тип поля выбираем "Выбор из списка"
3.4 В поле "Значение" пишем
Доставка
Самовывоз
4. Жмем "Сохранить"
5. Создаем файл *.js со следующим скриптом:
var inputs = [
'field-delivery_country',
'field-delivery_city',
'field-delivery_street1',
'field-delivery_postal_code'
];
document.getElementById("edit-panes-delivery-address-delivery-ucxf-samvyvoz").addEventListener('change', function()
{
var e = document.getElementById('edit-panes-delivery-address-delivery-ucxf-samvyvoz');
if( e.options[e.selectedIndex].value == 'Самовывоз' )
inputs.forEach( function( id ) {
console.log( document.getElementsByClassName( id ) );
document.getElementsByClassName( id )[0].style.visibility = "hidden";
});
else
inputs.forEach( function( id ) {
document.getElementsByClassName( id )[0].style.visibility = "visible";
});
});
});
ВАЖНО! В скрипте вместо "samvyvoz" вы указываете то имя поля, которое вы задали.
6. Объевите скрипт в *.info фале вашей темы.
Но этом все
Комментарии
Вы не могли бы скинуть ссылку на сайт с вот этим вот или дать скриншоты процесса заказа.
Я не понимаю почему ваш способ лучше чем воспользоваться flat_rate.
Вот скрины. Суть доработки проста, во-первых дать пользователю возможность выбрать самовывоз, напомню по дефолту есть только доставка. Флэт рэйт тут не спасет. Поверьте, за неделю непрерывного брэйншторма по этому вопросу, флэт рэйт был изучен вдоль и поперек, и не дает он простого и понятного пользователю решения. Во-вторых мой скрипт скрывает поля: страна, город, адрес и почтовый индекс. Кстати, надо еще зайти в настройки, и сделать эти поля необязательными для заполнения.
Где?
Спасибо, люблю данный модуль, скопирую себе ,вдруг пригодится