Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
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
450
So, you wanna build an add-on...
low
1
91
Parse Order Pro
low
2
660
PHP in Templates: Pain or Pleasure
low
0
190
Ajax and ExpressionEngine
low
1
110
Other Decks in Programming
See All in Programming
Navigation 3: 적응형 UI를 위한 앱 탐색
fornewid
1
310
Developing static sites with Ruby
okuramasafumi
0
270
配送計画の均等化機能を提供する取り組みについて(⽩⾦鉱業 Meetup Vol.21@六本⽊(数理最適化編))
izu_nori
0
150
チームをチームにするEM
hitode909
0
310
AIコーディングエージェント(Manus)
kondai24
0
170
從冷知識到漏洞,你不懂的 Web,駭客懂 - Huli @ WebConf Taiwan 2025
aszx87410
2
2.3k
AWS CDKの推しポイントN選
akihisaikeda
1
240
30分でDoctrineの仕組みと使い方を完全にマスターする / phpconkagawa 2025 Doctrine
ttskch
3
830
TypeScriptで設計する 堅牢さとUXを両立した非同期ワークフローの実現
moeka__c
6
3k
AIエージェントを活かすPM術 AI駆動開発の現場から
gyuta
0
390
TUIライブラリつくってみた / i-just-make-TUI-library
kazto
1
380
UIデザインに役立つ 2025年の最新CSS / The Latest CSS for UI Design 2025
clockmaker
18
7.4k
Featured
See All Featured
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.2k
Building Applications with DynamoDB
mza
96
6.8k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.8k
Building Adaptive Systems
keathley
44
2.9k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Why Our Code Smells
bkeepers
PRO
340
57k
For a Future-Friendly Web
brad_frost
180
10k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
Designing for Performance
lara
610
69k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.3k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
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