Recommended Posts

Хочу добавить еще 2 поля для поиска: 

Поиск по дате и источник. Дата с и до (добавления). Источник - это зареганные(риелторы,агенты итд.) пользователи и незареганные пользователи. Как это сделать типа select_box - а.

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


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

Хочу добавить еще 2 поля для поиска: 

Поиск по дате и источник. Дата с и до (добавления). Источник - это зареганные(риелторы,агенты итд.) пользователи и незареганные пользователи. Как это сделать типа select_box - а.

http://www.etown.ru/s/topic/241-%D0%B4%D0%BE%D0%B1%D0%B0%D0%B2%D0%B8%D1%82%D1%8C-%D0%BD%D0%BE%D0%B2%D1%8B%D0%B5-%D0%BF%D0%BE%D0%BB%D1%8F-%D0%B2-%D0%BF%D0%BE%D0%B8%D1%81%D0%BA-template-search-%D0%B8-%D0%B4%D1%80/

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


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

Да, читал и уже знаю как добавлять поля для поиска) но именно эти два поля я без понятия как добавить) 

Например как вывести календарики для поиска по дате или же откуда взять значения для поиска среди риелторов или незареганных - с этим справился)

 

UPD. Вывел в поиске "источник" но там все риелторы. Как сделать только 2 выбора ? от риелторов и от незареганных? помогите пожалуйста

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


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

А дополнительное поле для сортировки почему не сделать? Там уже есть сортировка по алфавиту, типу, городу, району города, цене.

Добавьте по дате и агенту + от собственников

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


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

Поиск по дате. Поля я добавил. Думаю сориентируетесь. Изменения в local_kvartira_search.php и двух файлах форм поиска - advanced и standart. Вам остается прописать в темплейт_сеарч условия поиска по ним и подправить стили на элементах формы.

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

 

По типу добавившего там же добавил поле add_by

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


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

спасибо))) ;)

Затрудняюсь с условием) писал пару примеров и что-то не срабатывает) 

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

		if(isset($params['date_from']) && isset($data_model_array['date'])){			$where_array[]='('.DB_PREFIX.'_data.date>='.$params['date_from'].')';		}		if(isset($params['date_for']) && isset($data_model_array['date'])){			$where_array[]='('.DB_PREFIX.'_data.date<='.$params['date_for'].')';		}

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


Ссылка на сообщение
Поделиться на других сайтах
if(isset($params['date_from']) && isset($data_model_array['date'])){

     $where_array[]='('.DB_PREFIX.'_data.date>='.$params['date_from'].')';

}

 

 

эти условия следует формировать так

if([если перехвачен параметр по которому происходит поиск] И [в текущей модели data есть активное поле по которому происходит поиск]){ тогда описываем условие поиска}

если ищем по полю date_added, то 

if(isset($params['date_from']) && isset($data_model_array['date_added'])){     $where_array[]='('.DB_PREFIX.'_data.date_added>=\''.$params['date_from'].'\')';}

$params['date_from'] стоит заключать в кавычки в выражении, так как оно скорее текстовое. А в перехвате из запроса нужно гарантирвано приводить date_from к нужному виду

if(preg_match('/^(\d\d\d\d-\d\d-\d\d)$/', $this->getRequestValue('date_from'))){    $params['date_from']=$this->getRequestValue('date_from');}

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


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

Еще интересно задействовать поиск по промежутке добавления как в mapviewer.
Чтобы задействовать это поле нужно сделать такой запрос?

$added_at = date('Y-m-d',$added_at);if(isset($params['added_at']) && isset($data_model_array['date_added'])){     $where_array[]='('.DB_PREFIX.'_data.date_added<=\''.$params['$added_at'].'\')';}

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


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

Откройте файл /apps/system/lib/frontend/grid/grid_constructor.php и запустите в нем поиск по

$params['added_in_days']

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

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


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

Откройте файл /apps/system/lib/frontend/grid/grid_constructor.php и запустите в нем поиск по

А что значит запустить?)

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


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

Поискать в файле указанную строку.

А да вижу) поменял имя формы add_in_days - но не реагирует) разве нужно еще что-то изменить?

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


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

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

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


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

Загнал в template_search

if(0!==(int)$this->getRequestValue('date_added')){     $params['added_in_days'] = (int)$this->getRequestValue('date_added');}
		if(isset($params['added_in_days']) && 0!=(int)$params['added_in_days']){			$date_limit=time()-((int)$params['added_in_days'])*24*3600;			$where_value_prepared[]=date('Y-m-d H:i:s', $date_limit);			$where_array_prepared[]='('.DB_PREFIX.'_data.date_added>=?)';		}

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


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

1. во вторй части уже не нужно проверять на ноль. вы сделали это в первой части. если ноль, то просто не будет параметра этого.

2. вторая часть должна выглядеть так:

if(isset($params['added_in_days'])){  $date_limit=date('Y-m-d H:i:s', (time()-($params['added_in_days'])*24*3600));  $where_array[]='('.DB_PREFIX.'_data.date_added>=\''.$date_limit.'\')';}

темплейт_сеарч не поддерживает плейсхолдеров в запросе. поэтому нужно в запрос включать и параметр сравнеия, а не знак вопроса

3. Для первой части я бы расширил условие

if(0<(int)$this->getRequestValue('date_added') && (int)$this->getRequestValue('date_added')<20){$params['added_in_days'] = (int)$this->getRequestValue('date_added');}

что бы не было желающих поискать объявления от начала времен.

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


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

Что-то у меня не работает поле add_by. Немогу понять в чем косяк. Помогите исправить

 

Вопрос снят) оказывается в template_search.tpl не сделал условие ну или удалил каким-то образом)

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

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


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

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

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

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

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

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

Войти

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

Войти сейчас