Адрес склада в заказе Prestashop или адрес доставки после выбора курьера

Опубликовано: 01.09.2018

Часто для интернет-магазина при оформлении заказа в доставке требуется указать адрес склада, а не личный адрес покупателя. И в Prestashop, к сожалению, адрес доставки указывается до выбора способа доставки, т.е. клиент еще не зная какой он метод доставки выберет, уже должен указать адрес. Многие находили выход из этой ситуации, делая оформление заказа на одной странице и с помощью стилей как можно ближе располагали блок заполнения адреса и выбор доставки.  Я в свое время использовала тоже достаточно простой способ указания адреса склада без дополнительных модулей. Таким методом вполне можно реализовать доставку Новой Почтой или другими курьерскими службами. Проверено на Prestashop 1.5 в стандартном шаблоне. В других версиях я думаю тоже должно работать.

При оформлении заказа в шаге с доставкой есть поле ввода сообщения к заказу. Это поле мы и будем использовать, дабы не создавать новые поля и новые переменные. Это лишает возможности клиента отправить сообщение к заказу при оформлении, но он всегда это может сделать  из личного кабинета. Так вот,меняем описание поля в шаблоне на адрес доставки или адрес склада и с заказом приходит сообщение с адресом. Или для разных методов разное описание к полю. Просто добавляем в нужное место шаблона order-carrier.tpl вот такой код:

<div id="sklad" {if isset($delivery_option[$id_address]) && $delivery_option[$id_address] == $key}style="display:block;"{/if}> {if isset($delivery_option[$id_address]) && $delivery_option[$id_address] == $key}<textarea cols="60" rows="3" name="message" id="message"></textarea> {/if} </div>

Для div  с id=»sklad» добавлено в css display : none .

Если же у вас несколько способов доставки, а поле для ввода адреса необходимо только для одного или нескольких вариантов доставки, то можно воспользоваться параметром $cart->id_carrier. Как определить параметр id_carrier .

Предварительно и з шаблона необходимо удалить, если еще встречается:

textarea cols="120" rows="3" name="message" id="message">{if isset($oldMessage)}{$oldMessage|escape:'htmlall':'UTF-8'}{/if}</textarea>

Для себя я делала вариант с тремя вариантами доставки и для всех присутствовало поле ввода адреса, но сопроводительная фраза для всех трех видов доставки разная:

<div id="sklad" {if isset($delivery_option[$id_address]) && $delivery_option[$id_address] == $key}style="display:block;"{/if}> <p>Укажите {if $cart->id_carrier == 11} город, ФИО получателя, адрес или номер cклада Новой Почты в вашем городе. </a> {/if} {if $cart->id_carrier == 12} адрес для доставки по городу: {/if} {if $cart->id_carrier == 10} почтовый индекс и адрес для доставки Укрпочтой: {/if} </p> {if isset($delivery_option[$id_address]) && $delivery_option[$id_address] == $key}<textarea cols="60" rows="3" name="message" id="message"></textarea> {/if} </div>

Где $cart->id_carrier — это ID курьера в админке магазина Prestashop.

Вот, что получилось в итоге:

Есть один недостаток такого метода: поле с адресом получается не обязательным, но и это, в принципе, можно решить. Меня лично это не смущало, если клиент не смог указать адрес,то лучше его не заставлять,а созвониться по указанному им номеру. И что потребуется еще, так это сделать адрес, который указывается в предыдущем шаге невидимым или необязательным. Как это сделать я расскажу в следующий раз.

rss