angalex 1 Жалоба Опубликовано: August 17, 2013 подскажите пожалуйста, я взял создал элемент формы планировка ввиде выбора значения(хрущевка, улучшеная и т.д.) что нужно сделать, чтобы при выборе в значения поиск все-таки осуществлялся по данному параметру, а не просто был для красоты , так кстати и другими элементами форм Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
TopRaN 235 Жалоба Опубликовано: August 17, 2013 через редактор таблиц, добавить параметры, (просто посмотрите лубой параметр на выбор) и сделаейте на его основе Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
angalex 1 Жалоба Опубликовано: August 17, 2013 через редактор таблиц, добавить параметры, (просто посмотрите лубой параметр на выбор) и сделаейте на его основеа можете привести маленький пример параметров, это внизу?где стоит: параметры и два поля со знаком равно между ними. Спасибо за ответ. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
angalex 1 Жалоба Опубликовано: August 17, 2013 может Вы еще знаете, где в настройках или в каком файле можно отрегулировать количество выводимых квартир в таблице, по умолчанию выводится 20 строк, и где меняется порядок ячеек в строке-заголовке таблиц, например чтобы первыми стояли ячейки с улицей, номером дома, площадью,и т.п. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Дмитрий Кондин 690 Жалоба Опубликовано: August 17, 2013 Для того, чтобы самостоятельно создавать таблицы объявлений, которые будут зависеть от тех полей которые вы создали в конструкторе полей форм. Вам нужно скачать вот этот архив: http://sitebill.ru/storage/beta/template.zipРаспакуйте его в ваш шаблон, структурно они вложились в /template/frontend/agency/main/И заменили собой тот main.php, который лежит по-умолчанию.Теперь смотрим строчку в этом новом main.php $this->template->assert('main', '<p><br></p>'.$this->grid_adv());Функция grid_adv() переопределена и ее можно увидеть прямо в main.phpТут подключается локальный конструктор таблицы require_once SITEBILL_DOCUMENT_ROOT. '/template/frontend/'.$this->getConfigValue('theme'). '/main/grid_constructor_local.php';Теперь смотрим grid_constructor_local.php Функция get_sitebill_adv_ext_base()Тут есть пример определения дополнительного поля, которое мы добавили в виде select_box, называется house_type. if ( $item_array['house_type'] > 0 ) {$ra[$item_id]['house_type_string'] = $kvartira_model['data']['house_type']['select_data'][$item_array['house_type']];}В результате мы инициализировали house_type_string уже не ключом, а значением этого ключа, через модель данных.Теперь в realty_grid.tplМы можем обращаться к типу дома так: {$grid_items[i].house_type_string}Таким образом можно определять новые переменные, которые отличаются от обычных safe_string Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
angalex 1 Жалоба Опубликовано: August 17, 2013 Спасибо попробую разобраться. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Дмитрий Кондин 690 Жалоба Опубликовано: September 30, 2013 В новой версии теперь появился усовершенствованный модуль для создания собственного поиска для любых параметров http://wiki.sitebill.ru/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA%D0%B0 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
evol22 2 Жалоба Опубликовано: November 25, 2013 Здравствуйте!Подскажите пожалуйста, мне нужно добавить возможность описка по полям - "balka" и "square_all" в последнем хочу чтоб искало по промежутку минимум - максимум как в поле цена, по идее я должен сделать template_search.php который будет иметь такой вид <?phpclass Template_Search extends SiteBill { public function getParams(){ $params=array(); if(''!==$this->getRequestValue('balka')){$params['balka'] = (int)$this->getRequestValue('balka');}if(''!==$this->getRequestValue('square_all')){$params['square_all'] = (int)$this->getRequestValue('square_all');} return $params; } public function run(){ $where_array=array(); $params=$this->getParams(); require_once(SITEBILL_DOCUMENT_ROOT.'/apps/system/lib/model/model.php'); $data_model = new Data_Model(); $data_model_array = $data_model->get_kvartira_model(false); $data_model_array = $data_model_array['data']; if(isset($params['balka']) && isset($data_model_array['balka'])){$where_array[]=DB_PREFIX.'_data.balka='.$params['balka'];}if(isset($params['square_all']) && isset($data_model_array['square_all'])){$where_array[]=DB_PREFIX.'_data.square_all='.$params['square_all'];} return array( 'where'=>$where_array, 'params'=>$params ); }} но оно не ищет... что я сделал не так, подскажите пожалуйста на примере. Заранее очень благодарен. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Дмитрий Кондин 690 Жалоба Опубликовано: November 25, 2013 Для поля balka в параметрах в редакторе форм вам надо добавить is_ranged = 1Затем добавляйте ее в локальную форму поиска. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: November 25, 2013 но оно не ищет... что я сделал не так, подскажите пожалуйста на примере. Заранее очень благодарен. В вашем Template_Search надо указать для square_all, что вы ищете по промежутку.План таков:1) Отправка с формы. с формы у вас должно уходить два параметра - мин. и макс. по square_all (два текстовых инпута с именами square_all_min, square_all_max - эти имена не обязательно должны быть такими, но лучше использовать системное имя колонки и через подчеркивание постфикс min\max). Метод добавления этих инпутов в форму не важен. Можете вручную указать их в шаблоне, можете использовать параметр is_ranged=1 для square_all_min, еси используются локальные формы поиска.2) Перехват параметров. эти параметры должны быть перехвачены. Часть параметров, такие как floor, floor_count обрабатываются самим движком изначально даже если они переданы в виде floor_min\floor_max, но большинство параметров надо перехватить. Для этого в Template_Search в getParams надо указатьif(''!==$this->getRequestValue('square_all_min')){ $params['square_all_min'] = $this->getRequestValue('square_all_min')}if(''!==$this->getRequestValue('square_all_max')){ $params['square_all_max'] = $this->getRequestValue('square_all_max')}т.е. именно square_all_min и square_all_max.Если вы считаете, что ваши параметры должны быть целыми числами, тогда смените условие на if(0!==(int)$this->getRequestValue('square_all_min')){ $params['square_all_min'] = (int)$this->getRequestValue('square_all_min')}что бы не учитывать нулевых и пустых згачений. 3) Определение условий. В Template_Search в run() необходимо обработать отфильтрованные параметрыВ вашем случаеif(isset($params['square_all_min']) && isset($data_model_array['square_all'])){ $where_array[]=DB_PREFIX.'_data.square_all>='.$params['square_all_min'];}if(isset($params['square_all_max']) && isset($data_model_array['square_all'])){ $where_array[]=DB_PREFIX.'_data.square_all<='.$params['square_all_max'];}Вы проверили, перехватился ли параметр, пс ли поле, на которое ссылается параметр в модели (вдруг вы давно его удалили, а условия поиска не почистили) и указали, как оно должно наложить условие на выборку из БД. В конце этих манипуляций вы возвращаете в движек массив условий фильтрации, который будет применен к выборке и массив перехваченных параметров, что бы они были учтены во всяких пейджерах\ссылках сортировок. NB. Если вы не используете пользовательские сетки и локальный local_grid_constructor.php то движек автоматически должен обработать в виде диапазонов следующие поля price_min, price_pm_min - ишется по полю price цена большая от price_min, price_pm_minprice , price_pm - ишется по полю price цена меньшая от price , price_pmfloor_min\floor_max - ищется по полю floor значения большие/меньшие от floor_min\floor_maxfloor_count_min\floor_count_max - ищется по полю floor_count значения большие/меньшие от floor_count_min\floor_count_maxsquare_min\square_max - ищется по полю square_all значения большие/меньшие от square_min\square_maxnot_first_floor - ищется по полю floor значения для которых floor не равен 1not_last_floor - ищется по полю floor значения для которых floor не равен значению floor_count live_square_min\live_square_max - ищется по полю square_live значения большие/меньшие от live_square_min\live_square_maxkitchen_square_min\kitchen_square_max - ищется по полю square_kitchen значения большие/меньшие от kitchen_square_min\kitchen_square_max Это поведение наличествует в данный момент, но не обязательно будет поддержано в дальнейшем. Иными словами, условия для таких полей включать в Template_Search не нужно. 1 pwnz22 reacted to this Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
evol22 2 Жалоба Опубликовано: November 25, 2013 Для поля balka в параметрах в редакторе форм добавил is_ranged = 1, залил вышеприведенный template_search.php ничего не открывается, белое окно... снес template_search.php сайт отображается но поиск не работает... Если можно, выложите уже готовый template_search.php с этими двумя категориями дабы я по аналогии и остальные поля добавил. П.С. По умолчанию работает только поиск по цене, остальных категорий нет, но поиск по площади что-то криво работает... вот и прошу дабы был пример с 2 полями - чтоб можно было ориентируясь на него и остальные править. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: November 25, 2013 белое окно - там в template_search из вашего сообщения малеха скобок пропущенных было. Я вашем же сообщении заменил код, используете его - должна пропасть ошибка. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
evol22 2 Жалоба Опубликовано: November 25, 2013 белое окно - там в template_search из вашего сообщения малеха скобок пропущенных было. Я вашем же сообщении заменил код, используете его - должна пропасть ошибка.спасибо огромное, все равно - ничего не отображается... Помогите плиз! Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: November 25, 2013 если опять белое окно, найдите файл /index.php в корне. Там есть третья строка//error_reporting(E_ALL); уберите два слеша в ее начала, сохраните файл и обновите страницу. Потом с самом конце вывода ошибок найдите строку, что начинается с Fatal error и отправьте мнее ее в приват.После этого слеши нужно восстановить в исходное положение. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Realtor 47 Жалоба Опубликовано: December 13, 2013 спасибо огромное, все равно - ничего не отображается... Помогите плиз!Получилось? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: December 13, 2013 Да, починили. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Realtor 47 Жалоба Опубликовано: December 14, 2013 Когда обновляться? Да, починили. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: December 14, 2013 Там были проблемы, связаннные с локальным кодом. Поэтому обновлений не потребовалось. Если имеете какие-то непонятки или некорректную работу, пишите сюда, будем смотреть. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Realtor 47 Жалоба Опубликовано: December 16, 2013 Создал локальный поиск. Отметил в нем одно поле чекбокс например Торг уместен и одно поле выпадающий список Материал стен. Отметил чекбокс и выбрал из списка . Поиска по этим параметрам не происходит. Почему? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
evol22 2 Жалоба Опубликовано: December 16, 2013 Создал локальный поиск. Отметил в нем одно поле чекбокс например Торг уместен и одно поле выпадающий список Материал стен. Отметил чекбокс и выбрал из списка . Поиска по этим параметрам не происходит. Почему?нужно прописать условия поиска в файле template_search.phpдопустим у нас есть поле balka и я хочу чтоб оно присутствовало в форме поиска и была возможность искать по нему, вот мануал: {ключ~~значение}Ключ - лучше делать числовым значением. Это удобнее и для целостности БД (если вы вдруг поменяете значение "есть" на "что-то другое", а в полях базы так и останутся значения "есть".)Если вам критично иметь осмысленные ключиТОгда перехватif(''!==$this->getRequestValue('balka')){$params['balka'] = $this->getRequestValue('balka'); // тут не надо (int) - вы перехватываете текст}обработкаif(isset($params['balka']) && isset($data_model_array['balka'])){$where_array[]=DB_PREFIX."_data.balka='".$params['balka']."'"; //тут добавляем кавычки вокруг значения, ибо текст, а не число}В случае, если ключи у вас циферкиif(0!==(int)$this->getRequestValue('balka')){$params['balka'] = (int)$this->getRequestValue('balka'); // тут приводим к целому - перехватываете число}но тут надо учитывать смысл ключей. Обычно ключ 0 означает отсутствие значения {0~~не указано}{1~~есть}{2~~нет}. Поєтому в зависимости от єти значений нужно принимать решение, какие значения balka из запроса могут считаться таковіми, что поиск по єтому параметру проводить не нужно. И отсекать не по равенству 0, а по какому-то другому принципу. обработкаif(isset($params['balka']) && isset($data_model_array['balka'])){$where_array[]=DB_PREFIX."_data.balka=".$params['balka']; //кавычки не нужны, так как число} т.е. файл template_search.phpдолжен иметь такое содержание <?phpclass Template_Search extends SiteBill { public function getParams(){ $params=array(); if(0!==(int)$this->getRequestValue('balka')){$params['balka'] = (int)$this->getRequestValue('balka');} return $params; } public function run(){ $where_array=array(); $params=$this->getParams(); require_once(SITEBILL_DOCUMENT_ROOT.'/apps/system/lib/model/model.php'); $data_model = new Data_Model(); $data_model_array = $data_model->get_kvartira_model(false); $data_model_array = $data_model_array['data'];if(isset($params['balka']) && isset($data_model_array['balka'])){$where_array[]=DB_PREFIX."_data.balka=".$params['balka']; //кавычки не нужны, так как число} return array( 'where'=>$where_array, 'params'=>$params ); } и так каждый параметрполе балка у меня было представлено в селектбоксе с таким параметром {0~~выбрать}{1~~нет}{3~~да} надеюсь кому-то помог) 1 Дмитрий Кондин reacted to this Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Realtor 47 Жалоба Опубликовано: December 17, 2013 Для лузера в програмировании будьте добры показать и написать как в "мурзилке" про локальный поиск (а лучше без локального, только чтобы все прописанные поля отображались в расширенном поиске) 1. Для полей чекбокс, где логика (0-нет, 1-да)2. Для поля select_by_query, где выборка идет из справочника3. Для поля text area , где выборка будет идти в тексте объявления4. Для поля select_box, где выборка будет идти {0~~выбрать}{1~~нет}{3~~да} и т.п.5. Для поля date, где выборка будет идти от и до6. Для поля safe_string, где выборка будет идти от и до Чтобы можно было скопировать в нужный файл CMC и поменять только название полей с таблицы Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Realtor 47 Жалоба Опубликовано: December 20, 2013 Предложение для разработчиков.Создать наподобия редактора форм как при добавлении объявления. В локальнай редактор поиска, в зависимости от выбранного раздела представляются поля необходимые и учтенные в этом разделе при добавлении. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
doma 22 Жалоба Опубликовано: April 6, 2016 В 17 декабря 2013 г. в 08:25, Realtor сказал: Для лузера в програмировании будьте добры показать и написать как в "мурзилке" про локальный поиск (а лучше без локального, только чтобы все прописанные поля отображались в расширенном поиске) 1. Для полей чекбокс, где логика (0-нет, 1-да) 2. Для поля select_by_query, где выборка идет из справочника 3. Для поля text area , где выборка будет идти в тексте объявления 4. Для поля select_box, где выборка будет идти {0~~выбрать}{1~~нет}{3~~да} и т.п. 5. Для поля date, где выборка будет идти от и до 6. Для поля safe_string, где выборка будет идти от и до Чтобы можно было скопировать в нужный файл CMC и поменять только название полей с таблицы вот хороший вопрос был для пользователей- чтобы один раз написать, овтетить, и вопросы пользователей закрыть и решить -пусть пользуются на здоровье Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах