koreshok

добавить новые поля в поиск (template_search и др.)

Recommended Posts

Вы буквально двух строк не дошли до цели)

<div class="tab-pane" id="main_sf">
		{include file='new_search_form.tpl'}
	</div>

это и есть включение "стандартной" формы.

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


Ссылка на сообщение
Поделиться на других сайтах
ВЫВОД ЗАКЛАДОК
проверяем есть ли юзер-формы
{if isset($local_search_forms) && $local_search_forms|count>0}
	если есть
	<ul class="nav nav-tabs" id="search_forms_tabs">
      выводим закладочку для стандартной
	  <li><a href="#main_sf" data-toggle="tab">Все</a></li>
      а теперь в цикле выводим закладочки для юзер-форм
	  {foreach from=$local_search_forms key=ftname item=ftdata}
	  <li{if $ftdata.active==1} class="active"{/if}><a href="#{$ftdata.id}" data-toggle="tab">{$ftname}</a></li>
	  {/foreach}
	</ul>
{else}
	если юзерформ нет, то и закладок нам не нужно
{/if}

ВЫВОД ФОРМ
проверяем есть ли юзер-формы
{if isset($local_search_forms) && $local_search_forms|count>0}
<div class="tab-content">
	<div class="tab-pane" id="main_sf">
      	выводим панель стандартной формы
		{include file='new_search_form.tpl'}
	</div>
  	а тут в цикле выводим панельки юзерформ
	{foreach from=$local_search_forms key=ftname item=ftdata}
	<div class="tab-pane{if $ftdata.active==1} active{/if}" id="{$ftdata.id}">
		{$ftdata.body}
	</div>
	{/foreach}
</div>	
{else}
	если юзерформ нет, то высыпаем просто одну нашу стандартную
	{include file='new_search_form.tpl'}
{/if}

 

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


Ссылка на сообщение
Поделиться на других сайтах
Только что, abushyk сказал:

ВЫВОД ЗАКЛАДОК
проверяем есть ли юзер-формы
{if isset($local_search_forms) && $local_search_forms|count>0}
	если есть
	<ul class="nav nav-tabs" id="search_forms_tabs">
      выводим закладочку для стандартной
	  <li><a href="#main_sf" data-toggle="tab">Все</a></li>
      а теперь в цикле выводим закладочки для юзер-форм
	  {foreach from=$local_search_forms key=ftname item=ftdata}
	  <li{if $ftdata.active==1} class="active"{/if}><a href="#{$ftdata.id}" data-toggle="tab">{$ftname}</a></li>
	  {/foreach}
	</ul>
{else}
	если юзерформ нет, то и закладок нам не нужно
{/if}

ВЫВОД ФОРМ
проверяем есть ли юзер-формы
{if isset($local_search_forms) && $local_search_forms|count>0}
<div class="tab-content">
	<div class="tab-pane" id="main_sf">
      	выводим панель стандартной формы
		{include file='new_search_form.tpl'}
	</div>
  	а тут в цикле выводим панельки юзерформ
	{foreach from=$local_search_forms key=ftname item=ftdata}
	<div class="tab-pane{if $ftdata.active==1} active{/if}" id="{$ftdata.id}">
		{$ftdata.body}
	</div>
	{/foreach}
</div>	
{else}
	если юзерформ нет, то высыпаем просто одну нашу стандартную
	{include file='new_search_form.tpl'}
{/if}

 

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

причем например это были бы так сказать свои отдельные формы поиска созданные через tpl файлы?
или к примеру как то к ним обратиться грамотно типа sait.ru/#poisk-quotkommerc-prodayuquot
так как если посмотреть в табах то идет ссыылка именно такая sait.ru/#poisk-quotkommerc-prodayuquot

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

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


Ссылка на сообщение
Поделиться на других сайтах
14 минуты назад, doma сказал:

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

не получится - это не ссылка

 

14 минуты назад, doma сказал:

имер это были бы так сказать свои отдельные формы поиска созданные через tpl файлы?

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

15 минут назад, doma сказал:

как то к ним обратиться грамотно типа sait.ru/#poisk-quotkommerc-prodayuquot

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

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


Ссылка на сообщение
Поделиться на других сайтах
Только что, abushyk сказал:

не получится - это не ссылка

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

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


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

помнится даже комментировали в основной форме -вывод формы "Расширенный поиск" при нажатию на которую вываливалась какая то новая более развернутая форма - но не рабочая
<!--                     <a class="search_page_toggle" href="#1">{$L_ADVSEARCH}</a>   -->
может таким образом и можно организовать более красивый поиск на главной странице?

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


Ссылка на сообщение
Поделиться на других сайтах
В 18.06.2017 в 21:31, abushyk сказал:

ВЫВОД ЗАКЛАДОК
проверяем есть ли юзер-формы
{if isset($local_search_forms) && $local_search_forms|count>0}
	если есть
	<ul class="nav nav-tabs" id="search_forms_tabs">
      выводим закладочку для стандартной
	  <li><a href="#main_sf" data-toggle="tab">Все</a></li>
      а теперь в цикле выводим закладочки для юзер-форм
	  {foreach from=$local_search_forms key=ftname item=ftdata}
	  <li{if $ftdata.active==1} class="active"{/if}><a href="#{$ftdata.id}" data-toggle="tab">{$ftname}</a></li>
	  {/foreach}
	</ul>
{else}
	если юзерформ нет, то и закладок нам не нужно
{/if}

ВЫВОД ФОРМ
проверяем есть ли юзер-формы
{if isset($local_search_forms) && $local_search_forms|count>0}
<div class="tab-content">
	<div class="tab-pane" id="main_sf">
      	выводим панель стандартной формы
		{include file='new_search_form.tpl'}
	</div>
  	а тут в цикле выводим панельки юзерформ
	{foreach from=$local_search_forms key=ftname item=ftdata}
	<div class="tab-pane{if $ftdata.active==1} active{/if}" id="{$ftdata.id}">
		{$ftdata.body}
	</div>
	{/foreach}
</div>	
{else}
	если юзерформ нет, то высыпаем просто одну нашу стандартную
	{include file='new_search_form.tpl'}
{/if}

 

Костя или Дмитрий подскажите а где редактируются поля в данных юзер формах ? так как там идет "От" и "До" например цена, площадь, этаж и так далее -форма становится ккорявой и не красивой, не удобной для пользователя и не по феншую -хочется откорректировать и сделать по человечески а то получается как на фото.

От и до идет наверное тогда когда поле в админке стоит как  is_ranged=1 надо как то его грамотно подкорректировать чтобы одно на другое не налазило

delkarta.png

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


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

и еще вопрос -может сделать "разумные" - самодельные ручные формы поиска для удобства?
сделав их в виде файлов poisk1.tpl poisk2.tpl poisk3.tpl poisk4.tpl poisk5.tpl

и потом когда идет цикл для перебора -проверять их по id? и если такой id имеется то просто сделать inclide="poisk5.tpl" например ? а если такого id нет то вывести автоформируемую.
так как ручная форма может  дать больше стилистики и форм оформления.

Вопрос будут ли они все корректно работать и  искать если сделать их inclide ?

 

вывод формы идет выводом переменной  {$ftdata.body}
а где эта переменная находится -где ее посмотреть ?

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


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

и еще заметили что в этих формах есть кнопка "очистить" но нажимая на нее ничего не происходит -то есть она не работает почему то.

 

Лечится как то или что она очищает?

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


Ссылка на сообщение
Поделиться на других сайтах
В 02.08.2017 в 15:53, doma сказал:

Костя или Дмитрий подскажите а где редактируются поля в данных юзер формах ? так как там идет "От" и "До" например цена, площадь, этаж и так далее -форма становится ккорявой и не красивой, не удобной для пользователя и не по феншую -хочется откорректировать и сделать по человечески а то получается как на фото.

От и до идет наверное тогда когда поле в админке стоит как  is_ranged=1 надо как то его грамотно подкорректировать чтобы одно на другое не налазило

delkarta.png

 

В 02.08.2017 в 16:27, doma сказал:

и еще заметили что в этих формах есть кнопка "очистить" но нажимая на нее ничего не происходит -то есть она не работает почему то.

 

Лечится как то или что она очищает?

вопросы прежние как "очистить "  и как избавиться "от и до"  или сделать как то иначе -вписав в 1 строку и в каком файле это настраивается

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


Ссылка на сообщение
Поделиться на других сайтах
В 15.10.2013 в 13:08, abushyk сказал:

Новое поле - это совсем новое или одно из тех, что есть в модели, но не выводится в форме поиска?

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

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


Ссылка на сообщение
Поделиться на других сайтах
5 часов назад, polina23565 сказал:

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

 

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


Ссылка на сообщение
Поделиться на других сайтах
В 11/21/2017 в 17:34, Realtor сказал:

подскажите как приметить в этом ролике Тип операции?

 

Хватате поле Тип операции справа и переносите в центр.

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


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

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

В феврале 2017 года Дмитрий помог написать код ( ниже) и всё стало отлично работать, но месяц назад почему то перестало выводить в результаты поиска нужную инф. Почему так произошло, может что то поменяли в движке и это изменение отразилось на работе этого кода? Как решить проблему?

Прописано в в файл template search. php

<?php

class Template_Search extends SiteBill {

    public function getParams() {
	//Тут определяем задан ли параметр для нашего справочника (select_by_query) в форме поиска
	if (0 !== intval($this->getRequestValue('spravochnik_id'))) {
	    $params['spravochnik_id'] = intval($this->getRequestValue('spravochnik_id'));
	}

	//Тут определяем задан ли параметр для safe_string
	if ('' != $this->getRequestValue('moya_stroka')) {
	    $params['moya_stroka'] = intval($this->getRequestValue('moya_stroka'));
	}

	return $params;
    }

    public function run() {
	$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['spravochnik_id']) && isset($data_model_array['spravochnik_id'])) {
	    $where_array[] = DB_PREFIX . '_data.spravochnik_id=' . $params['spravochnik_id'];
	}

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

	return array(
	    'where' => $where_array,
	    'params' => $params
	);
    }

}

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


Ссылка на сообщение
Поделиться на других сайтах
12 часа назад, Кэтти сказал:

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

В феврале 2017 года Дмитрий помог написать код ( ниже) и всё стало отлично работать, но месяц назад почему то перестало выводить в результаты поиска нужную инф. Почему так произошло, может что то поменяли в движке и это изменение отразилось на работе этого кода? Как решить проблему?

Прописано в в файл template search. php

А что меняли в движке?

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


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

я ничего не меняла , я имела ввиду может обновление системы или какое -нибудь дополнение повлияло на работу кода , только месяц назад заметила что поиск перестал выводить инфу по safe_string .

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


Ссылка на сообщение
Поделиться на других сайтах
14 часа назад, Кэтти сказал:

я ничего не меняла , я имела ввиду может обновление системы или какое -нибудь дополнение повлияло на работу кода , только месяц назад заметила что поиск перестал выводить инфу по safe_string .

Пишите в личку доступы, будем разбираться.

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


Ссылка на сообщение
Поделиться на других сайтах
<div class="type control-group">
                <label class="control-label" for="inputType">
                    Поиск по описанию
                </label>
            <div class="controls"> <action="{$estate_folder}">	<input type="text" id="input-search" name="srch_word" placeholder="Поиск по описанию">  
               </div>

почему такая конструкция не отрабатывает в поиске? вроде должна бы искать по слову в описании, в админке же работает.

 

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


Ссылка на сообщение
Поделиться на других сайтах
20 часов назад, nagovizin сказал:

<div class="type control-group">
                <label class="control-label" for="inputType">
                    Поиск по описанию
                </label>
            <div class="controls"> <action="{$estate_folder}">	<input type="text" id="input-search" name="srch_word" placeholder="Поиск по описанию">  
               </div>

почему такая конструкция не отрабатывает в поиске? вроде должна бы искать по слову в описании, в админке же работает.

 

Для описания нужно добавить обработчки

<?php
class Template_Search extends SiteBill {
	public function getParams(){

		$params=array();
		
		if($this->getRequestValue('srch_word') != '' ){
			$params['srch_word'] = $this->getRequestValue('srch_word');
		}
		
		return $params;
	}

	public function run(){
		$params=$this->getParams();
		$where_array=array();
		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['srch_word'])){
			$where_array[]= DB_PREFIX.'_data.text LIKE \'%' . $params['srch_word'] . '%\'';
		}
		
		return array(
			'where'=>$where_array,
			'params'=>$params		
		);
	}
}

 

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


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, rumantic сказал:

Для описания нужно добавить обработчки

я сделал вот так в template_search.php и не работает (((

<?php
class Template_Search extends SiteBill {
    public function getParams(){
        $params=array();
        if(''!==$this->getRequestValue('optype')){
	 	$params['optype'] = (int)$this->getRequestValue('optype');
	 }
        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($params['optype'] == 1 && isset($data_model_array['optype'])){
        	$where_array[optype]=DB_PREFIX.'_data.optype ='.$params['optype'];

	

 }

$phone = trim($this->getRequestValue('phone'));if(''!==$phone){   $params['phone'] = $phone;  }	if(isset($params['phone'])){			$where_array[]='('.DB_PREFIX.'_data.phone LIKE "%'.$params['phone'].'%")';		}

        return array(
            'where'=>$where_array,
            'params'=>$params	
        );
    }
}
    

		$params=array();
		
		if($this->getRequestValue('srch_word') != '' ){
			$params['srch_word'] = $this->getRequestValue('srch_word');
		}
		
		return $params;
	


		$params=$this->getParams();
		$where_array=array();
		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['srch_word'])){
			$where_array[]= DB_PREFIX.'_data.text LIKE \'%' . $params['srch_word'] . '%\'';
		}
		
		return array(
			'where'=>$where_array,
			'params'=>$params		
		);

Вы уж извеняйте я понимаю что вам не очень есть когда проводить тут курсы основ php, но если не сложно плиз подскажите че я делаю не так?

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


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, nagovizin сказал:

я сделал вот так в template_search.php и не работает (((

Вы уж извеняйте я понимаю что вам не очень есть когда проводить тут курсы основ php, но если не сложно плиз подскажите че я делаю не так?

return $params;

Уберите это

И вот это не нужно снова делать

		$params=array();

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


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

Я бы посоветовал не использовать параметр с именем srch_word для поиска по тексту. Параметр с таким же именем обрабатывается системой и могут быть нестыковки в результатах.

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


Ссылка на сообщение
Поделиться на других сайтах
В 27.12.2017 в 12:03, nagovizin сказал:

я сделал вот так в template_search.php и не работает (((


<?php
class Template_Search extends SiteBill {
    public function getParams(){
        $params=array();
        if(''!==$this->getRequestValue('optype')){
	 	$params['optype'] = (int)$this->getRequestValue('optype');
	 }
        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($params['optype'] == 1 && isset($data_model_array['optype'])){
        	$where_array[optype]=DB_PREFIX.'_data.optype ='.$params['optype'];

	

 }

$phone = trim($this->getRequestValue('phone'));if(''!==$phone){   $params['phone'] = $phone;  }	if(isset($params['phone'])){			$where_array[]='('.DB_PREFIX.'_data.phone LIKE "%'.$params['phone'].'%")';		}

        return array(
            'where'=>$where_array,
            'params'=>$params	
        );
    }
}
    

		$params=array();
		
		if($this->getRequestValue('srch_word') != '' ){
			$params['srch_word'] = $this->getRequestValue('srch_word');
		}
		
		return $params;
	


		$params=$this->getParams();
		$where_array=array();
		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['srch_word'])){
			$where_array[]= DB_PREFIX.'_data.text LIKE \'%' . $params['srch_word'] . '%\'';
		}
		
		return array(
			'where'=>$where_array,
			'params'=>$params		
		);

Вы уж извеняйте я понимаю что вам не очень есть когда проводить тут курсы основ php, но если не сложно плиз подскажите че я делаю не так?

У меня работает.

В фильтре поиска:

<div class="col-md-4">
                                     <label>Улица или слово:</label>
                    <input name="srch_word" size="10" type="text" value="{$srch_word}" placeholder="Поиск по улице или слову из объявления">
                                    </div>

В шаблоне в папке main-template_search.php:

if(isset($params['srch_word'])){
            $where_array[]= '('.DB_PREFIX.'_data.text LIKE \'%' . $params['srch_word'] . '%\''.' OR '.DB_PREFIX.'_data.address LIKE \'%' . $params['srch_word'] . '%\''.' 
            OR '.DB_PREFIX.'_data.street_id in (select street_id from '.DB_PREFIX.'_street where name like \'%' . $params['srch_word'] . '%\')
            OR '.DB_PREFIX.'_data.complex_id in (select complex_id from '.DB_PREFIX.'_complex where name like \'%' . $params['srch_word'] . '%\') )
            ';
        }

Посмотреть как работает можно здесь

 

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


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

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

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

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

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

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

Войти

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

Войти сейчас