нужно прописать условия поиска в файле 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
должен иметь такое содержание
<?php
class 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
);
}
и так каждый параметр
поле балка у меня было представлено в селектбоксе с таким параметром
Попробуйте добавить в параметрі поля price модели параметр is_ranged=1. Должны получиться поля диапазона.
Позунка нет и, в ближайшее время в автоформах, не будет.