Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Finding your High with Low Search
Search
Lodewijk Schutte
October 04, 2016
Programming
0
360
Finding your High with Low Search
An introduction to Low Search for ExpressionEngine, given at EEconf 2016.
Lodewijk Schutte
October 04, 2016
Tweet
Share
More Decks by Lodewijk Schutte
See All by Lodewijk Schutte
Errare Humanum Est
low
2
460
So, you wanna build an add-on...
low
1
93
Parse Order Pro
low
2
660
PHP in Templates: Pain or Pleasure
low
0
200
Ajax and ExpressionEngine
low
1
120
Other Decks in Programming
See All in Programming
Deno Tunnel を使ってみた話
kamekyame
0
300
Rubyで鍛える仕組み化プロヂュース力
muryoimpl
0
310
これならできる!個人開発のすゝめ
tinykitten
PRO
0
140
0→1 フロントエンド開発 Tips🚀 #レバテックMeetup
bengo4com
0
460
perlをWebAssembly上で動かすと何が嬉しいの??? / Where does Perl-on-Wasm actually make sense?
mackee
0
280
Navigation 3: 적응형 UI를 위한 앱 탐색
fornewid
1
510
Go コードベースの構成と AI コンテキスト定義
andpad
0
150
ZJIT: The Ruby 4 JIT Compiler / Ruby Release 30th Anniversary Party
k0kubun
1
310
Pythonではじめるオープンデータ分析〜書籍の紹介と書籍で紹介しきれなかった事例の紹介〜
welliving
3
750
Combinatorial Interview Problems with Backtracking Solutions - From Imperative Procedural Programming to Declarative Functional Programming - Part 2
philipschwarz
PRO
0
130
AtCoder Conference 2025「LLM時代のAHC」
imjk
2
640
AIで開発はどれくらい加速したのか?AIエージェントによるコード生成を、現場の評価と研究開発の評価の両面からdeep diveしてみる
daisuketakeda
1
210
Featured
See All Featured
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
72
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
190
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
220
Color Theory Basics | Prateek | Gurzu
gurzu
0
170
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
Technical Leadership for Architectural Decision Making
baasie
0
200
Site-Speed That Sticks
csswizardry
13
1k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
0
140
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
360
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
0
84
Transcript
Finding your high with Low Search By Lodewijk Schutte ~
Low, October 2016
Hi! I'm Low!
Low Search
Google searches pages, returns URLs. Low Search filters & returns
Channel Entries.
The more granular the content, the more control you have
over its output.
Searching vs. Filtering •In ExpressionEngine, searching == filtering. •Filter output
by setting parameters to the Channel Entries Tag. •Low Search extends the CE Tag, offering more parameters and thus more control.
{exp:channel:entries dynamic="no"} code {/exp:channel:entries}
{exp:channel:entries dynamic="no" status="open" show_future_entries="no" show_expired="no" orderby="date" sort="desc" limit="100" }
{exp:channel:entries dynamic="no" channel="articles" category="5" username="stanlee" search:body="marvel" start_on="-3 months" status="open" show_future_entries="no"
show_expired="no" orderby="date" sort="desc" limit="100" }
{exp:low_search:results} Read parameters, run filters Set fixed_order or entry_id parameter
Call {exp:channel:entries} Post-process returned entries Return search results
{exp:low_search:results collection="products" keywords="luke cage" category:type="7|8" category:gender="11" search:size="=XL|XXL" range-to:price="30" orderby_sort="price|asc" }
All mens tees and hoodies in size XL or XXL, up to $30, that match the terms "luke cage", ordered by price, ascending.
{exp:channel:entries channel="products" entry_id="34|38|42|51" orderby="price" sort="asc" }
{exp:channel:entries channel="products" entry_id="34|38|42|51" orderby="price" sort="asc" status="open" show_future_entries="no" show_expired="no" limit="100" }
A parameter… •…can be fixed: {exp:low_search:results name="value"} •…can be dynamic,
using a form: <input name="name" value="value"> •…can be read as a variable: {low_search_name} => value
{exp:low_search:form result_page="search/results"} <input name="keywords" value=""> <select name="category:type[]" multiple>…</select <input name="search:size[]"
type="checkbox" value="XL"> XL … <input name="range-to:price" type="range" min="10" max="250" step="10"> <select name="limit">…</select> other form fields {/exp:low_search:form}
domain.com/search/results/eyJyZXN…
{exp:low_search:results collection="products" query="{segment_3}" } {if count == 1} Searched for
{low_search_keywords} {/if} code {/exp:low_search:results}
A filter… •…consists of any amount of parameters. •…runs one
or more (simple) queries. •…passes its results onto the next. •…triggers no_results when it comes up empty.
Keywords •Matches entries against given keywords •Uses a full-text index
created via collections •Allows for speed and relevance •Allows for inflections and stemming •Order by relevance score
Field Search •Like native search:field_name parameter •Can target title, url_title
and status •Can target Grid (or Matrix) columns •Additional matching, like starts_with •Smart Field Search option
Ranges •Targets numeric or date fields •Two values, one field;
optionally specify min/max values separately •Can also target Grid (or Matrix) columns •Inverse ranges (two fields, one value)
Categories •Accepts category_ids •Combine AND and OR by specifying groups
on the fly: •category:color="1|2|3" •category:type="4|5|6" •category:style="7|8|9"
Relationships •Accepts entry_ids or url_titles •Can target the parent or
child entry: •parent:field_name="1|2|3" •child:field_name="4|5|6"
Distance •Uses Haversine algorithm •From given lat/lon values to one
or two fields containing the entry’s coordinates •Specify max radius and unit •Order by calculated distance
There’s more! •Tags (included) •Members https://github.com/low/low_search_members •Table https://github.com/low/low_search_table •Calendar (sold
separately, EE2) •Store (sold separately, EE2) •Create your own…
class Low_search_filter_foo extends Low_search_filter { public function filter($entry_ids) { return
$entry_ids; } public function fixed_order() { return FALSE; } public function results($rows) { return $rows; } }
Questions?
Thank You! gotolow.com @low