Автокомлит для города в новом чекауте

Поле "Город" в новом чекауте предусматривает возможность подключения стороннего плагина для поиска городов.

Для этого требуется чтобы ваш плагин подписался на событие shop-script

address_autocomplete

На вход плагин получит такой массив параметров:

$params = [   
'country' => waRequest::request('country', null, waRequest::TYPE_STRING),   
'region'  => waRequest::request('region', null, waRequest::TYPE_STRING),    
'city'    => waRequest::request('city', null, waRequest::TYPE_STRING),    
'zip'     => waRequest::request('zip', null), 
];

Плагин должен вернуть многомерный массив городов
Пример:

 [   
     [        
           'country' => 'rus',        
            'region'  => '04',        
            'city'    => 'Горно-Алтайск',        
            'zip'     => '659650'    
    ],    
    [    
            'country' => 'rus',   
            'region'  => '04',    
            'city'    => 'Новоалтайск',    
            'zip'     => '' 
    ],
];

Даже если совпадение одно плагин должен вернуть многомерный массив. Все ключи не обязательные. 

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

2 ответа

  • 2
    BNP (Дмитрий) 18 декабря 2018 18:09 #

    1. А можно ли это вкрутить так же в бэк? При оформлении заказа из бэкенда думаю люди оценят.

    2. Может стоит подумать в сторону расширить и углубить? Например, неплохо бы улицу автоподсказывать. Да и реквизиты организации/банка сейчас не составляет труда подставить ;)

    3. Это не только в приложении Магазин может быть актуально. Пользователи всяких там Контакты, Команда, CRM, etc тоже вполне могут порадоваться такой возможности =)

  • 1
    BNP (Дмитрий) 18 декабря 2018 20:51 #

    Еще вопрос. Для чего в массиве надо возвращать страну, регион и индекс, если эти данные не учитываются при выборе города из подсказок?


    И еще один.

    Как плагины будут "драться" за этот хук?

    • +1
      enso_studio@mail.ru enso_studio@mail.ru 18 декабря 2018 21:54 #

      кто последний в списке того и тапки

      • +1
        BNP (Дмитрий) BNP (Дмитрий) 18 декабря 2018 23:09 #

        Фигвам называется. Судя по коду - собирается все от всех плагинов в единый массив =)

    • +1
      Алексей Алексей Webasyst 19 декабря 2018 00:00 #

      Всё смёрджится в один массив.

      • +2
        BNP (Дмитрий) BNP (Дмитрий) 19 декабря 2018 07:18 #

        Имхо, не самое удачное решение. Думаю 2,3...N Москвы, Питера или Урюпинска в списке, несколько смутят покупателя ....

    • +1
      Максим Сердюков Максим Сердюков 19 декабря 2018 15:00 #

      Возвращать все сразу не надо. Забыл упомянуть в статье. Все поля не обязательные. Пока все значения кроме города нигде не применяются, они были добавлены в рамках возможного масштабирования этого автокомплита. 

      Дублирование что-то упустил из виду. После мержа всех результатов сделаю шафл и оставлю уникальные. Но вообще чтобы не изобретать искусственный интеллект по сортировке городов, администратору магазина лучше не включать 10 плагинов автокомплита городов.

      • +1
        enso_studio@mail.ru enso_studio@mail.ru 19 декабря 2018 15:19 #

        заодно о хуке 'shipping_package'  - нужно выполнять событие только плагина указанного в настройках, поэтому стандартный вызов события явно не подходит.

      • +1
        BNP (Дмитрий) BNP (Дмитрий) 19 декабря 2018 15:56 #

        Поэтому я и думаю, что лучше просто сделать "кто последний, того и тапки". 

        Пока мы в рамках региона ищем - это одно, а вот как только/если наступит перспектива того, что поиск будет вообще отвязан от входных данных (страна, регион), вот там реальные танцы с бубнами начнутся с одинаковыми названиями населенных пунктов в разных регионах/странах.

        Следующий момент. Если мы автокоплитим только город - индекс отдавать вообще смысла особого нет. Ибо для большинства городов, без улицы будет отдаваться индекс центральной почты (если будет). Пытаться этот индекс в дальнейшем куда-то запихнуть в рамках оформления заказа - так себе идея. 

        • +1
          Максим Сердюков Максим Сердюков 19 декабря 2018 16:10 #

          Город уже отвязан от входных данных. Можно начать поиск с него. Поэтому ваш плагин может к каждому городу прикрепить страну и регион. Зип опционально для маленьких городов. 

          • +1
            BNP (Дмитрий) BNP (Дмитрий) 19 декабря 2018 16:40 #

            Так мой плагин прикрепляет эти данные, но только еще вчера они нигде не учитывались. Что-то поменялось?

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите