Template Filters

Pagelove's Liquid engine provides the standard Shopify Liquid filters, a set of Jekyll-compatible filters, and Pagelove-specific extensions for hashing, random generation, date arithmetic, data conversion, and querying arrays. Every filter is available inside any element with pagelove:template="text/liquid".

Filters are documented by category. Each page describes its filters with an example for every one; filters marked extension are Pagelove or Jekyll/LiquidJS additions beyond the standard Shopify Liquid set.

Filters by category

String — text manipulation: case, trimming, escaping, replacing, slugs

append · array_to_sentence_string · capitalize · cgi_escape · default · downcase · escape · escape_once · lstrip · newline_to_br · normalize_whitespace · number_of_words · prepend · remove · remove_first · remove_last · replace · replace_first · replace_last · rstrip · size · slice · slugify · split · strip · strip_html · strip_newlines · truncate · truncatewords · upcase · uri_escape · url_decode · url_encode · xml_escape

Number — arithmetic and rounding

abs · at_least · at_most · ceil · divided_by · floor · minus · modulo · plus · round · times · to_integer

Array — ordering, mapping, and querying lists

compact · concat · find · find_index · first · group_by · has · join · last · map · pop · push · reject · reverse · shift · sort · sort_natural · sum · uniq · unshift · where

Date and time — formatting and arithmetic on dates

date · date_add · date_to_long_string · date_to_rfc822 · date_to_string · date_to_xmlschema · unix_to_iso

Hashing and security — cryptographic digests and password hashes

argon2 · bcrypt · sha256

Random generation — random strings and passphrases

diceware · random

Data and JSON — serialise values

inspect · json · jsonify

Expression-variant array — query arrays with a full expression

find_exp · find_index_exp · group_by_exp · has_exp · reject_exp · where_exp

When a filter errors

If a filter raises an error on a particular value — for example, date given an unparseable string, or a hashing filter given an out-of-range parameter — only that one {{ … }} output expression is affected. The expression renders an inline error marker (an https://pagelove.org/Error Microdata element) and the rest of the page composes normally; a single bad value never blanks the whole page. In an attribute value (e.g. href="{{ … }}"), where markup can't go, the expression renders empty instead.

<!-- One bad value degrades locally; the rest of the page is unaffected -->
<p>Published {{ article.date | date: "%B %d, %Y" }}</p>
<p>{{ article.title }}</p>

This applies to value-output expressions. An error in a control-flow tag's expression (the condition of an {% if %}/{% unless %}, or a {% for %} range) is not degraded — there is no safe partial meaning for a failed condition or loop, so it surfaces as a composition error.

See also