Поля адреса при оформлении заказа Shop-Script 5

В летнем обновлении до версии Shop-Script 5.1.4 появилась очень полезная возможность спрашивать только те данные пользователя, которые действительно нужны для доставки. С этим обновлением процесс оформления заказа у этого движка стал лучшим среди тех движков, за которыми я наблюдаю.

Но для точной настройки необходимо изменить все модули доставки, используемые в конкретном магазине. Каждый модуль должен возвращать список полей, которые необходимы для доставки этим конкретным способом.

В подопытном магазине у меня используется следующий порядок оформления заказа:

  1. Контактная информация и страна с регионом
    • Имя (обязятельно)
    • Фамилия (необязятельно)
    • Телефон (обязательно)
    • E-mail (обязательно)
    • Страна (обязательно)
    • Регион (обязательно)
  2. Способ доставки
  3. Способ оплаты
  4. Подтверждение

Соответственно для почтового отправления нужны все остальные поля адреса, для партнерских пунктов выдачи заказов город и почтовый индекс (по нему определяется город через API курьерской службы), для курьера «Курьер Санкт-Петербург в пределах КАД» только улица, дом.

Как следует из описания обновления каждый модуль может иметь метод requestedAddressFields() который возвращает массив требуемых полей адреса. К сожалению, в документации нет описания опций этого массива. Пришлось покопаться и поэкспериментировать. Вот что получилось. Массив возвращаемых значений содержит массивы, в качестве ключей — название поля. Поля могут быть только из адреса, т.е. принудительно спросить фамилию не получится :(. Поддерживаются следующие поля адреса: country, region, city, street, zip (страна, регион, город, улица/дом, индекс).

Если массив параметров поля пустой, все настройки для него будут по умолчанию, заданные в настройках магазина

В качестве значения ключа тоже ассоциативный массив, который может содержать следующие ключи:

  • cost — поле используется для расчета доставки
  • required — поле обязательно для заполнения, независимо от глобальных настроек магазина. может быть true или false
  • hidden — скрытое поле. Не будет показано пользователю, но значение его будет передано для обработки
  • value — значение поля. Можно принудительно указывать какое-то значение для скрытого поля.

Например в штатном модуле доставки почтой России страна жестко задана:

То есть для подопытного магазина я оставил в глобальных настройках только страну и регион, а все модули изменил, чтобы они возвращали список полей, которые необходимы для оформления заказа, с пометкой required.

Автор

Сергей Родовниченко

Родился, учился, работал и все такое. Занимаюсь поддержкой сайтов на Shop-Script, Joomla, Wordpress, Prestashop. А также на самописных движках на базе CakePHP.

3 thoughts on “Поля адреса при оформлении заказа Shop-Script 5”

  1. Странная логика. Имеем стандартные поля адреса и доп.поле Склад.

    Чтобы исключить поле склад надо написать

    public function requestedAddressFields()
    {
    return $this->prompt_address ? array(
    ‘country’ => array( ‘hidden ‘=> true ),
    ‘zip’ => array( ‘hidden ‘=> true ),
    ‘region’ => array( ‘hidden ‘=> true ),
    ‘city’ => array( ‘hidden ‘=> true ),
    ‘street’ => array( ‘hidden ‘=> true ),
    ) : false;

    Т.е. не склад прячем, а поля адреса «прячем»

    1. Я вообще оставил только страну и регион, а стандартные и свои модули изменил так, чтобы они спрашивали остальные нужные им поля. Увы, многие отделения почты требуют отчество получателя, пришлось и такое поле добавить :-)

  2. Однако, если покупателю не предлагается указать значение для какого-то поля адреса, можно задать некоторое

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *