Автозаполнение поля 'Город' на странице оформления заказа в Ubercart

Главные вкладки

Аватар пользователя Technician Technician 7 мая 2013 в 10:55

Хочу сделать простую (как мне казалось) вещь. Чтобы клиент при оформлении заказа, заполняя поле "Город", мог выбрать из предложенных вариантов. Таблица с городами в БД у меня есть. Написать обработчик для AJAX callback функции тоже проблемы не составляет. Но я уперся в невозможность включить этот самый callback для поля в форме, т.е. прописать параметр '#autocomplete_path' => 'myautocomplete'. Пробовал менять параметры полей через form_alter, и выяснил, что все поля, относящиеся к адресу доставки (имя, фамилия, компания, город, адрес и т.д.), генерируются на лету - в form_alter они недоступны. Так сделано потому, что порядок этих полей, их наличие и обязательность заполнения - настраиваются. И потом в соответствии с этими настройками уже генерится содержимое панели Delivery. Я изучил исходники, нашел, где все это создается. Можно прямо в коде добавить нужные параметры и получить результат. Но это не Drupal way, хочется универсальное решение без последующих проблем при обновлениях.

Может быть, я не там копаю и здесь надо делать автокомплит не через Drupal Forms API, а как-нибудь через jQuery или Webforms + Ubercart Webform Checkout Pane. Есть у кого-нибудь подобный опыт?

Комментарии

Аватар пользователя Andruxa Andruxa 7 мая 2013 в 11:13

не по сабжу, но близко к теме

я подумываю насчет вывода блока с яндекс/гугл картами на странице чекаута:

api яндекса (гугла вроде бы тоже, но латиницей) позволяют по клику на карту вывести данные точки - регион, город, улицу, дом (если юзер попал мышью в дом)
а api гугла - ещё и почтовый индекс, уж не знаю, насколько он правильный при этом.

т.е. можно сделать автозаполнение полей адреса по клику в блоке карты

у самого руки пока не дошли реализовать, но собираюсь

Аватар пользователя Technician Technician 7 мая 2013 в 11:27

"Andruxa" wrote:
т.е. можно сделать автозаполнение полей адреса по клику в блоке карты

Мысль хорошая. И удобно будет. Но ведь все равно нужно сначала ввести город, чтобы он на картах отобразился. Или вводить его где-то в поле рядом с картой, а уже потом заполнять поля адреса по клику на карте?

Аватар пользователя Andruxa Andruxa 7 мая 2013 в 14:08

"Technician" wrote:
все равно нужно сначала ввести город, чтобы он на картах отобразился

город желательно знать до оформления заказа:

существует ряд товаров, доставка которых невозможна из-за ограничений логистических компаний (горючие материалы, некоторые жидкости и т.п.)
или не целесообразна - например, корм для собак: 5кг корма стоит 2 т.р., его доставка почтой обойдётся в половину стоимости

такие товары желательно фильтровать в каталоге по городу/региону покупателя, как минимум, уведомлять его о невозможности доставки

geoip тут может помочь