Skip to content
Search channel entry titles, custom fields, category names, category descriptions and category custom fields
Latest commit 64b5e04 Mar 7, 2012 @croxton Update
Failed to load latest commit information.
third_party/search_fields Fixed some longstanding bugs Mar 7, 2012 Update Mar 7, 2012

Search Fields

Version 2.0.3

  • Requires: ExpressionEngine 2


Search channel entry titles, entry custom fields, category names, category descriptions, category custom fields and Tagger tags.


  1. Copy the folder search_fields to ./system/expressionengine/third_party/


search:[field]= (optional)

Field can be title, cat_name, cat_description, [custom_field_name], cat_[custom_field_name]. Tagger module tags assigned to an entry can be also be searched in the form: [tagger_custom_field_name]="tagger=[tag]"

Search parameter syntax is identical to the channel search parameter.

Note that when searching categories references to category fields should be prefixed with 'cat_'.

For example: search:cat_name="keyword" search:cat_description="keyword" search:cat_custom_field="keyword"

channel= (optional)

Channel(s) name to search. Pipe-delimited list, e.g. products|pages Default is * (searches all channels).

operator= (optional)

'AND' or 'OR'. Operator for joining search field WHERE conditions. Default is 'OR'.

delimiter= (optional)

Delimiter for returned entry id string. Default is pipe |.

placeholder= (optional)

Single variable placeholder to replace with search results output. Default is search_results (use as {search_results}).

site= (optional)

The site id. Default is current site id

min_length= (optional)

The minimum length for the search term. Default is 3.

dynamic_parameters= (optional)

Allow specific search parameters to set via $_POST. E.g. "title|custom_field".

Note: your form fields should have the same name as the fields you wish to search, but prefixed with 'search:'. E.g.:

<input type="text" name="search:title">

Sample use

This plugin is best used as a tag pair wrapping {exp:channel:entries}, e.g.:

    {exp:channel:entries entry_id="{search_results}" disable="member_data|categories" dynamic="no" orderby="title" sort="asc" limit="10"}
        <a href="{page_url}">{title}</a>

Use in combination with get_parameters and an embedded template to persist POSTed search keywords for pagination, e.g.:

{embed="search_results" search='{exp:get_parameters post="search"}'}

The search_results template could look like:


    <p>Search results for &lsquo;<em>{embed:search}</em>&rsquo;</p>
    {exp:channel:entries channel="my_channel" entry_id="{search_results}" disable="member_data|categories" dynamic="no" orderby="title" sort="asc" limit="10"}

        <a href="{page_url}">{title}</a>

        <div class="pagination">
                <li class="previous">{if previous_page}<a href="{auto_path}">Prev</a>{/if}</li>
                <li class="next">{if next_page}<a href="{auto_path}">Next</a>{/if}</li>
            <p>Page {current_page} of {total_pages}</p>


    {if no_results}
        <p class="intro">Sorry, no matches were found for &lsquo;<em>{embed:search}</em>&rsquo;.</p>


This plugin can be memory intensive if you have lots of entries and search all channels.

It is NOT a replacement for the Search module, rather it is best used for custom filtering of entries in a single channel.

Something went wrong with that request. Please try again.