denkurgan

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

Recommended Posts

95% объявлений будут размещаться для города "Москва", если в редакторе форм в поле city_id поставить значение по умолчанию то новые объявления будут создаваться с городом "Москва", но районы будут со всех городов!!! Как сделать чтобы были только районы того города который выбран. А то приходится снова выбирать поле город, что бы загрузить районы. Аналогично для поиска, хотелось бы не выбирать каждый раз город а потом район.

Может можно перед выводом города задать значение в select_box_td равное "Москва" и районы соответственно Москвы.

<tr>
     <td>{$L_CITY}</td><td><div class="select_box_td">{$city_list}</div></td>
 </tr>
 <tr>
    <td>{$L_DISTRICT}</td><td><div class="select_box_td">{$district_list}</div></td>
</tr>

 

PS. Все названия городов вымышленные, и их совпадение с реальными случайность.

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


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

В новой версии у нас появилось приложение tlocation http://wiki.sitebill.ru/index.php?title=Tlocation

Оно сейчас в активной доработке-тестировании.

И вот там уже есть подобный алгоритм - выбора города или региона по-умолчанию, чтобы были только его районы и улицы.

Пилотный проект на tlocation http://erver.ru/

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


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

В новой версии у нас появилось приложение tlocation http://wiki.sitebill.ru/index.php?title=Tlocation

Предполагает наличие иерархической зависимости именно в порядке country_id -> region_id -> city_id -> district_id -> street_id

Есть одно исключение. Если указан параметр link_street_to_city из иерархической цепочки исключается звено district_id, и street_id считается зависимым от city_id.

Да. Я може привязал улицу к городу.  Часто улица проходит по нескольким районам. Была мысль одну и туже "Улицу" разнести в два "Района". Но решил лучше привизать к городу.

Еще наша гильдия риэлторов когда то писала мультилистинг, он не прижился но там есть хорошая информация.

Есть таблица :  Улица - Номер дома - Район.

Все дома разбиты по районам, пользователь заносит "улицу" и "дом"  а программа сама ставит район.

Если бы такое сделать у нас, было бы здорово.

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


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

Сижу, голову ломаю, улицы проходят по нескольким районам, идея с привязкой к городу оч хорошая! Получается привязать улицы можно только через админку((. Возможность выбора как на http://erver.ru/ это уже есть или пока в разработке?

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


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

Сижу, голову ломаю, улицы проходят по нескольким районам, идея с привязкой к городу оч хорошая! Получается привязать улицы можно только через админку((. Возможность выбора как на http://erver.ru/ это уже есть или пока в разработке?

Модуль как erver.ru мы еще тестируем, но в новых версиях (свежих установках) есть опция включения tlocation.

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


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

Модуль как erver.ru мы еще тестируем, но в новых версиях (свежих установках) есть опция включения tlocation.

Нашол tlocation, но при выборе в приложениях tlocation, открывается просто чистый лист(( Возможно его ещё включить где надо?

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


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

Нашол tlocation, но при выборе в приложениях tlocation, открывается просто чистый лист(( Возможно его ещё включить где надо?

 

 

Cам tlocation не имеет включателя\выключателя. Для него может включаться\выключаться стратегия обработки адресных данных при загрузке из эксель листов. Но сам тлокейшн не требует включения. Он активен автоматически при установке приложения. В админке он не выдает ничего - белый лист.

Для использования тлокейшн в редакторе форм создается элемент типа tlocation, там где выбираются safe_string и прочие. Этот элемент создает комплекс элементов аналогичных по смыслу country_id\region_id\city_id\district_id\street_id. Для правильной обработки элементы с такими именами в редакторе форм должны быть удалены либо переведены в состояние "неактивно".

По сути тлокейшн это все те же country_id\region_id\city_id\district_id\street_id, но собранные в комплекс.

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

Еще одно замечание - элемент типа tlocation должен иметь системное имя - "tlocation" и не иначе.

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


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

Спас за информацию, работает tlocation осталось решить с базой. В базе на сайте http://erver.ru/ хорошо собраны все области и города  в них. В кладре я не понимаю как выдернуть основные города в областях. Если не секрет где найти такую базу которая на сайте?

 

Решил начать заново)) поставил на локал и взял тест на 30 дней(сорри если что). В старых версиях была таблица регионов в редакторе форм, сейчас её нет там или что то я сделал по другому. На новых в поиске выводится страны и регион но в окошках  пусто?

 

f594945cffe8.png

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


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

На новых в поиске выводится страны и регион но в окошках  пусто?

 

 

В окошках пусто, потому что шаблон рассчитывает на стандартные элементы географии, а они отключены. А вот тлокейшн не выводится, потому, что по умолчанию он не присутствует в шаблоне формы поиска.

 

1. Файл /www/apps/system/lib/frontend/search/kvartira_search.php ищем строку типа

 

if(isset($kvartira_model['data']['tlocation'])){    $this->template->assert('tlocation_form_element', $form_generator->compile_tlocation_element($kvartira_model['data']['tlocation']));}

и заменяем ее на 

 

if(isset($kvartira_model['data']['tlocation'])){    $this->template->assert('tlocation_form_element_simple', $form_generator->compile_tlocation_element($kvartira_model['data']['tlocation']));    $this->template->assert('tlocation_form_element_extended', $form_generator->compile_tlocation_element($kvartira_model['data']['tlocation']));}

2. Файл /www/template/frontend/имя шаблона/standart_search_form.tpl либо /www/template/frontend/agency/search_form.tpl (для тех шаблонов в которых нет standart_search_form.tpl)

Там есть разметка которая отвечает за вывод географии. Это {$country_list} и т.д. похжее по смыслу.

 

За вывод тлокейшна отвечает два куска кода

{$tlocation_form_element_simple.html}и{$tlocation_form_element_extended.html}

Первый для простой формы поиска, второй для расширенной.

 

Нужно ликвидировать из формы (либо закомментировать) все выводы стандартных элементов ({$country_list}, {$region_list}, {$city_list}, {$street_list}, {$district_list}) и расставить {$tlocation_form_element_simple.html} и {$tlocation_form_element_extended.html}

 

3. Следить за тем, что бы не обновился файл  /www/apps/system/lib/frontend/search/kvartira_search.php ибо тот вывод что там для тлокейшн немного устарел и был рассчитан, что форма поиска одна, а не две - расширенная и простая. В дальнейшем, думаю, генерация двух элементов станет доступна и в базовой версии.

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


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

В старых версиях была таблица регионов в редакторе форм, сейчас её нет там

 

 

 

Города были. Улицы были. Регионов вроде не было.

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


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

abushyk  у меня все заработало, спасибо.Только как по умолчанию страну,регион поставить?

 

Еще не пойму как деактивировать country_id - в редакторе таблиц его нет.В mysql тоже ничего не понял.

 

Сайт domikus.com

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


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

Еще не пойму как деактивировать country_id - в редакторе таблиц его нет.В mysql тоже ничего не понял.

 

Если его нет в редакторе форм для таблицы data - тогда ничего не надо деактивировать. Главное, проверьте, что бы работала возможность добавлять страны из админки (Справочники -> Страны). Если там есть этот раздел и он рабочий, значит страны подключатся.

И еще непонятно что делать с формами подачи объявления?

Форма подачи строится на основе модели для data. Она, в принципе, повторяет форму администратора при вводе объявления. Т.е. тут не должно быть надо что-либо еще делать.

Только как по умолчанию страну,регион поставить?

В редакторе форм берется на редактирование ваш элемент tlocation. Ближе к концу у него есть набор полей Параметры. В них можно выставить дефолтные значения. например для страны добаляете пару default_country_id и для нее вписываете значение id (идентификатора) страны по умолчанию. Взять его можно из Справочник - Страны

 

CMS_Sitebill.png

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


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

abushyk - большое спасибо! Теперь все понятно. Только подать объявление через tlocation не удалось, будем ждать финального релиза!

И еще как я понял, такие фичи как комбобокс будут отсутствовать?

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


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

И еще как я понял, такие фичи как комбобокс будут отсутствовать?

 

Не совсем верно. Есть два пути развития структуры географии (города, страны, улицы, ...) - ленивый и геморройный.

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

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

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

 

Это если речь идет о самом принципе работы, а не о презентационном стиле.

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


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

Только подать объявление через tlocation не удалось, будем ждать финального релиза!

 

Не удалось подать с той формы, что под урлом /add/ или через админку?

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


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

Порядок в связях у меня и так есть.Когда пользователи добавляют улицу , я её привязываю к городу.Ведь есть-же ajax перезагрузка полей-выбираю город и подгружаються улицы...

Не совсем понятен смысл tlocation.. разве-что в плане кода удобнее собрать все в одно приложение..

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


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

через фронт /add/ или /data/?do=new

 

Вылетело из головы - в параметрах поля тлокейшн проверьте, что бы не был отмечен чекбокс "Хранить значение поля в таблице". Поле комплексное и на БД оно проецируется не прямо на колоку таблицы, а на группу колонок.

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


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

Проверьте вот єту конфиг переменную link_street_to_city

Если она выбрана, то район игнорируется.

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


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

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

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

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

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

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

Войти

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

Войти сейчас