Duoplane Retailer accounts
Available on all plans
The Liquid templating language offers a number of standard filters and comparison operators for customizing the output of Liquid templates. In addition to the standard filters and operators, Duoplane has added several custom ones to make working with Liquid more powerful and convenient.
Filters: Strings
fixed_width
Creates a fixed-width version of the string. Arguments:
- The width of the output
- The padding character (default = " ")
- Whether the original string should be aligned on the left or right
Input: {{ "1234" | fixed_width: 10, "0", "right" }}
Output: 0000001234
replace_regex
Replaces every occurrence of the first argument in a string with the second argument. Unlike the standard filter replace
, this filter uses a regular expression match against the first argument. Arguments:
- The regular expression matcher
- The replacement text
- Optional: Whether the match is case-sensitive (Default = false)
Input: {{ "ABC12345EFG" | replace_regex: "[^\d]", "" }}
Output: 12345
replace_newlines
Replaces every newline / line break / carriage return character with the second argument. Arguments:
- The replacement text (Default = " ")
For example, if "description" is a string with a line break, such as:
Hello, Nice to meet you
Input: {{ description | replace_newlines: " " }}
Output: Hello, Nice to meet you
transliterate
Replaces non-ASCII characters with an ASCII approximation, or if none exists, a replacement character. Arguments:
Input: {{ "Jérôme" | transliterate }}
Output: Jerome
Specify the replacement character if an ASCII approximation is not available. In the below example, the template translates any emoji or unrecognized character to the specified character ("X"):
Input: {{ "Jérôme 😊" | transliterate: 'X' }}
Output: Jerome X
xml_escape
Escapes any characters in the string so that the string can be used in XML
Input: {{ 'how "are" <you>' | xml_escape }}
Output: how "are" <you>
Filters: Arrays
push
Appends the argument to the end of the array. If my_list is an array of: ["apples", "oranges"]
Input: {{ my_list | append: "bananas" | join: ", " }}
Output: apples, oranges, bananas
Filters: Numbers
with_precision
Rounds a number to a given precision.
Input: {{ 50.9634 | with_precision: 2 }}
Output: 50.96
to_currency
Formats a number as currency Arguments:
- The precision (default = 2)
- Currency symbol (default = "")
- Separator between the units (default = ".")
- Thousands delimiter (default = ",")
Input: {{ 123456.54321 | to_currency: 2, "$" }}
Output: $123,456.54
Filters: dates and times
plus_hours
Adds a certain number of hours to a starting time If an order
was created on Jan 1, 2020 at 12:00pm UTC:
Input: {{ order.created_at | plus_hours: 2 }}
Output: 2020-01-01 14:00:00 UTC
plus_business_hours
Adds a certain number of business hours to a starting time. Business time is defined as Monday through Friday, 9am to 5pm. Arguments:
- The number of business hours to add
- The time zone for determining business hours
If an order
was created on March 7, 2020 at 9:00pm PST: (a Saturday)
Input: {{ order.created_at | plus_business_hours: 2, "Pacific Time (US & Canada)" }}
Output: 2020-03-09 11:00:00 -0700
in_time_zone
Converts a time to be outputted in a specific time zone. Arguments:
- The time zone
If an order
was created at 1:00pm Pacific:
Input: {{ order.created_at | in_time_zone: "Eastern Time (US & Canada)" | date: "%H:%M" }}
Output: 16:00
parse_time
Uses natural language parsing to convert a string representation of a date or time to a Time object that can be used by Liquid. Arguments:
- A date or time string
If today is Monday:
Input: {{ "yesterday" | parse_time | date: "%a" }}
Output: Sun
Filters: Other
json_parse
Converts a JSON string into a Liquid object that can be used elsewhere in the template
Input: {% assign mapping = '{ "color": "blue", "size": 5 }' | json_parse %}{{ mapping["color"] }}
Output: blue
to_barcode
Outputs a barcode representation of a string as an SVG image tag Arguments:
- The barcode height in pixels (default = 50)
- The barcode thickness in pixels (default = 1)
Input: {{ "0123456789" | to_barcode }}
Output:
Operators
matches
Checks for whether the left side matches the right side after the right side is converted to a case-insensitive regular expression.
Input: {% if "UPS Ground" matches "^UPS.*$" %}It is UPS.{% endif %}
Output: It is UPS.