Forums / Setup & design / filtering search results in search.tpl

"Please Note:
  • At the specific request of Ibexa we are changing this projects name to "Exponential" or "Exponential (CMS)" effective as of August, 11th 2025.
  • This project is not associated with the original eZ Publish software or its original developer, eZ Systems or Ibexa".

filtering search results in search.tpl

Author Message

Luke Barton

Sunday 20 November 2005 2:59:09 pm

I've searched the forums for a few hours, but I cannot get my search filters to work. Here's my set up:

1. I only wish to search under 1 node (node_id = 60).
2. I only wish to search certain content class (class_id = 23).

I've tried variations of the following code, but I still get results of mixed class and from other node trees.

{section show=$use_template_search}
{set page_limit=10}
{set search=fetch(content,search,
hash('text',$search_text,
'subtree_array',array(60),
'class_id',array(23),
'offset',$view_parameters.offset,
'limit',$page_limit))}
{set search_result=$search['SearchResult']}
{set search_count=$search['SearchCount']}
{set stop_word_array=$search['StopWordArray']}
{set search_data=$search}
{/section}

or

{section show=$use_template_search}
{set page_limit=10}
{set search=fetch(content,search,
hash('text',$search_text,
'subtree_array',60,
'class_id',23,
'offset',$view_parameters.offset,
'limit',$page_limit))}
{set search_result=$search['SearchResult']}
{set search_count=$search['SearchCount']}
{set stop_word_array=$search['StopWordArray']}
{set search_data=$search}
{/section}

or even

{section show=$use_template_search}
{set page_limit=10}
{set search_subtree_array=60}
{set class_id=23}
{set search=fetch(content,search,
hash('text',$search_text,
'subtree_array',$search_subtree_array,
'class_id',$class_id,
'offset',$view_parameters.offset,
'limit',$page_limit))}
{set search_result=$search['SearchResult']}
{set search_count=$search['SearchCount']}
{set stop_word_array=$search['StopWordArray']}
{set search_data=$search}
{/section}

or

{section show=$use_template_search}
{set page_limit=10}
{set search_subtree_array=array(60)}
{set class_id=array(23)}
{set search=fetch(content,search,
hash('text',$search_text,
'subtree_array',$search_subtree_array,
'class_id',$class_id,
'offset',$view_parameters.offset,
'limit',$page_limit))}
{set search_result=$search['SearchResult']}
{set search_count=$search['SearchCount']}
{set stop_word_array=$search['StopWordArray']}
{set search_data=$search}
{/section}

I feel like I'm missing something obvious. I'm using ez 3.6.4.

Thanks in advance for your help.

-Luke

Łukasz Serwatka

Sunday 20 November 2005 11:13:34 pm

Hi Luke,

You can create your filter using advancedsearch from and hidden fields:

<form action={"/content/advancedsearch/"|ezurl} method="get">
<input class="searchbox" type="text" size="8" name="SearchText" id="Search" value="" />
<input class="searchbutton" name="SearchButton" type="submit" value="Search" />
<input type="hidden" name="SubTreeArray[]" value="60" />
<input type="hidden" name="SearchContentClassID" value="23" />
</form>

Turn on debug output to check possible errors. Check is attributes of class 23 are searchable.

Try with:

{let search_result=array()
     search_count=array()
     stop_word_array=array()
     search=array()
     page_limit=10
     {*read get variable*}
     search_text=ezhttp('SearchText', 'get')}

{set search=fetch(content,search, hash('text',$search_text,
                                       'subtree_array',array(60),
                                       'class_id',array(23),
                                       'offset',$view_parameters.offset,
                                       'limit',$page_limit))}
{set search_result=$search['SearchResult']}
{set search_count=$search['SearchCount']}
{set stop_word_array=$search['StopWordArray']}

{section loop=$search_result}
	{$item.name}
{/section}

{/let}

Personal website -> http://serwatka.net
Blog (about eZ Publish) -> http://serwatka.net/blog

Luke Barton

Wednesday 23 November 2005 12:15:22 pm

Lukasz,

Thanks for much for pointing me in the right direction. My simple search form now filters on node_tree and class_id:

{let search_result=array()
     search_count=array()
     stop_word_array=array()
     search=array()
     page_limit=10
     search_text=ezhttp('SearchText','get')|wash}

{set search=fetch(content,search, hash('text',$search_text, 'subtree_array',array(61, 169, 161), 'class_id',array (1,40,30,23,12,32,43,18,28,19,37,38,27,42,35,41,44,25), 'offset',$view_parameters.offset,'limit',$page_limit))}
{set search_result=$search['SearchResult']}
{set search_count=$search['SearchCount']}
{set stop_word_array=$search['StopWordArray']}

Thanks again.

-Luke