denkurgan

Как сделать поиск по-умолчанию для города

Recommended Posts

default_city_id = 3                                   город по умолчанию с Id=3

default_district_id = 30                           район по умолчанию id=30

visibles=city_id|district_id|street_id     использовать только город/район/улицу

 

Если я правильно понял, эти значения в каждом поле прописывать city, district или в одном поле city ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если я правильно понял, эти значения в каждом поле прописывать city, district или в одном поле city ?

Нет. Все эти поля надо отключить и создать одно новое с именем и типом tlocation это поле заменит весь адрес.

Читать тут http://wiki.sitebill.ru/index.php?title=Tlocation. Но не уверен что оно тебе надо.

Нету нормальной вариации для установки "города" по умолчанию. Самому надо. Такая хорошая функция и нету в базовой версии.

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А autocomplete задачу сводит вообще к загрузке по первым буквам, он не грузит в самом начале совсем ничего.

Установил связь Город/Район/Улица. Включил autocomplete на улицу.

На сейте выбираю Город - Курган, Район - Восточный. Начинаю набирать улицу он предлагает мне улицы из других районов и городов. 

Разрешите спросить и зачем он это делает? Пусть выбирает с учетом выбранных предыдущих справочников.

 

ps.1

И представте он разрешил мне сохранить объект с улицей которой нет в этом городе.

Так можно составить адрес: Италия, Костромская область, г.Москва :)

 

ой еще ps.2

Еще и улицы добавляться без учета города. Если выбран город Москва, вводится новая улица она добавляется в никуда, без привязки к городу.

И улица добавляется не только при подаче объявлений, а в шаблоне поиска. Зашел пользователь поискать себе квартиру набрал улицу Космонавтов и бац она в базе никуда не привязанная, да и улицы такой некогда в нашем городе не было.

Как быть? Ждать обновления?

Изменено пользователем denkurgan

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Разрешите спросить и зачем он это делает? Пусть выбирает с учетом выбранных предыдущих справочников.

 

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

 

Так можно составить адрес: Италия, Костромская область, г.Москва

 

 

Верно подмечено. Зато в базе нет избыточности - пятидесяти улиц Ленина из 50-ти разных городов)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Нету нормальной вариации для установки "города" по умолчанию. Самому надо. Такая хорошая функция и нету в базовой версии.

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

 

имеете в виду, что default_city_id = 3  не срабатывает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

имеете в виду, что default_city_id = 3  не срабатывает?

Дак ее в параметрах надо ставить!?.

Дак чтож Вы молчали. :rolleyes:  Написали бы где нибудь. Хотя может и писали но не нашел.

Пошел тестить.

 

ps.

Пришел, потестил. Не работает.

Не работает!!! В tlocation работает!

 

Делал так,  редактор таблиц/таблица data/ поле city_id

Параметры default_city_id = 3.

Не работает :(

Изменено пользователем denkurgan

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Дак ее в параметрах надо ставить!?.

 

Не понял. Вы же там выше скриншот с параметрами давали.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Помогите, пытаюсь в шаблоне standart_search_form.tpl при выводе города, задать город если форма загружается в первый раз.

{if $city_list ==0} //если ничего не выбрано = 0{assign var=city_list value=3}// Тогда город Курган id=3<tr><td>{$L_CITY}</td><td><div class="select_box_td">{$city_list}</div></td></tr>{else}  //Иначе $city_list оставляем без изменений, тот который уже выбирали<tr><td>{$L_CITY}</td><td><div class="select_box_td">{$city_list}</div></td></tr>{/if}
Изменено пользователем denkurgan

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

стоп. так дело не пойдет.

в $city_list у вас кусок хтмл-разметки, поэтому сравнивать его с нулем бессмысленно.

 

если хотите выставить город в форме, тогда надо в kvartira_search или его локальном заменителе, там где строки

if ( $this->getConfigValue('city_in_form') ) {    $this->template->assert('city_list', $form_generator->get_single_select_box_by_query($kvartira_model['data']['city_id']));}

изменить так

if ( $this->getConfigValue('city_in_form') ) {    if((int)$kvartira_model['data']['city_id']['value']==0){        $kvartira_model['data']['city_id']['value']=3;    }    $this->template->assert('city_list', $form_generator->get_single_select_box_by_query($kvartira_model['data']['city_id']));}

Но в самом шаблоне вы уже не имеете возможности влиять на селектбокс. Только яваскриптом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

По теме, и все таки как установить к примеру - страну, регион и город по умолчанию для формы поиска и формы добавления объекта?

Realtor, смотри пост выше

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Для формы добавления, в отличии от формы поиска, можно воспользоваться полем "Значение по-умолчанию" в редактировании свойств поля формы. Туда надо вписать ид умолчательного гоорда\улицы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

denkurgan, для вашего случае есть еще вариант.

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

Можно сделать иначе. 

Создать файл init.js в папке со скриптами шаблона.

В нем сделать запись

$(document).ready(function(){    if($('div#simple_search [name=city_id]').val()==0){         $('div#simple_search [name=city_id]').val(3);         $('div#simple_search [name=city_id]').trigger('change');    }});

и подключить этот файл в форму поиска.

Тогда, если ваш селект пришел с "пустым " значением, скрипт выставит нужный город и дернет событие изменения селекта, по которому стартует подгрузка улиц.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

denkurgan, для вашего случае есть еще вариант.

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

Тогда, если ваш селект пришел с "пустым " значением, скрипт выставит нужный город и дернет событие изменения селекта, по которому стартует подгрузка улиц.

 

Для autocomplete вроде и так не подгружает улицы.

Вот я и мечусь между autocomplete и tlocation.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не, последний вариант вообще для стандартного селектбокса без автокомплита и тлокейшн.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

 

Верно подмечено. Зато в базе нет избыточности - пятидесяти улиц Ленина из 50-ти разных городов)

Насколько я понимаю улицы не загружаются на сайт Автокомпливит  делает запрос на выборку к базе и только улицы соответствующие условию подгружаются на сайт. Может можно усложнить запрос - добавить условие на проверку принадлежности улицы к городу (к подчиненному справочнику) ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

пришел к выводу что tlocation больше подходит.Но выбор в городе 2000+ улиц уже тормозит и неудобно столько скроллить пока найдешь нужную улицу.

В любом случае чтобы tlocation можно было реально применять - нужно решение по типу autocomplete для выбора улиц.Причем это первостепенная потребность.

На данный момент не tlocation не обычный метод сортировки не работают достаточно хорошо чтобы можно было построить серьезную доску объявлений.Это тормозящий фактор.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Может не будем делать "колхоз тюнинг",  а попросим создателей включить данную опцию в дальнейшую разработку

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

При формировании адреса если поля нет то оно не выводится, но зачемто остается его название, можно его тоже убрать?

 

post-967-0-45844000-1383809437_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

На результат не надо накладывать условие. Условие надо наложить на исходные данные. А кто знает, что он строит? Селектбокс знает? Ведь он когда то начинает рыться именно в улицах откуда он их берет из таблицы "strееt"? Подсунуть ему таблицу   SELECT * FROM `re_street` WHERE (sity_id=3)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Предложение.

Может по умолчанию в CMS заложить  определение города, региона и страны по IP адресу

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

При формировании адреса если поля нет то оно не выводится, но зачемто остается его название, можно его тоже убрать?

 

Я теперь должен переспросить - это в варианте базовом, без всяких тлокейшн?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас