Доступные фильтры Liquid
Фильтры Liquid используются для изменения вывода строк, чисел, переменных и объектов. Они отделяются от значений, к которым применяются, с помощью символа |.
{{ 'hal 9000' | upcase }} <!-- Output: HAL 9000 -->
Некоторые фильтры принимают параметры. Фильтры можно также объединять, при этом они применяются в порядке слева направо.
{{ 2 | times: 2 | minus: 1 }} <!-- Output: 3 -->
{{ "Hello, " | append: user.firstname }} <!-- Output: Hello, Dave -->
В приведенном ниже разделе описаны разные фильтры.
Фильтры массива
Фильтры массива используются для работы с массивами.
batch
Разделяет массив на несколько массивов указанного размера.
Код
{% assign batches = entityview.records | batch: 2 %}
{% for batch in batches %}
<ul>
{% for item in batch %}
<li>{{ item.fullname }}</li>
{% endfor %}
</ul>
{% endfor %}
Вывод
<ul>
<li>John Smith</li>
<li>Dave Thomas</li>
</ul>
<ul>
<li>Jake Johnson</li>
<li>Jack Robinson</li>
</ul>
concat
Объединяет два массива в один новый массив.
Если в качестве параметра указан один элемент, concat возвращает новый массив, состоящий из исходного массива с указанным элементом в качестве последнего элемента.
Код
Group #1: {{ group1 | join: ', ' }}
Group #2: {{ group2 | join: ', ' }}
Group #1 + Group #2: {{ group1 | concat: group2 | join: ', ' }}
Вывод
Group #1: John, Pete, Hannah
Group #2: Joan, Bill
Group #1 + Group #2: John, Pete, Hannah, Joan, Bill
except
Выбирает все объекты в массиве, у которых указанный атрибут не имеет заданного значения. (Это противоположно where.)
Код
{% assign redmond = entityview.records | except: 'address1_city', 'Redmond' %}
{% for item in redmond %}
{{ item.fullname }}
{% endfor %}
Выходные данные
Jack Robinson
первая
Возвращает первый элемента массива.
first также можно использовать с особенной нотацией точки в случаях, когда его необходимо использовать внутри тега.
Код
{% assign words = This is a run of text | split: %}
{{ words | first }}
{% if words.first == This %}
The first word is This.
{% endif %}
Вывод
This
The first word is This.
group_by
Группирование элементов в массиве по указанному атрибуту.
Код
{% assign groups = entityview.records | group_by: 'address1_city' %}
{% for group in groups %}
{{ group.key }}:
{% for item in group.items %}
{{ item.fullname }}
{% endfor %}
{% endfor %}
Вывод
Redmond:
John Smith
Dave Thomas
Jake Johnson
New York:
Jack Robinson
join
Объединение элементов массива с символом, переданным в качестве параметра. Результатом является одна строка.
Код
{% assign words = This is a run of text | split: %}
{{ words | join: , }}
Вывод
This, is, a, run, of, text
последняя
Возвращает последний элемента массива.
last также можно использовать с особенной нотацией точки в случаях, когда его необходимо использовать внутри тега.
Код
{% assign words = This is a run of text | split: -%}
{{ words | last }}
{% if words.last == text -%}
The last word is text.
{% endif -%}
Выходные данные
text
The last word is text.
order_by
Возвращает элементы массива, упорядоченные по указанному атрибуту элементов массива.
При необходимости можно указать desc в качестве второго параметра для сортировки элементов в убывающем порядке, а не в восходящем.
Код
{{ entityview.records | order_by: 'fullname' | join: ', ' }}
{{ entityview.records | order_by: 'fullname', 'desc' | join: ', ' }}
Выходные данные
Dave Thomas, Jack Robinson, Jake Johnson, John Smith
John Smith, Jake Johnson, Jack Robinson, Dave Thomas
random
Возвращает один случайно выбранный элемент из массива.
Код
{{ group1 | join: ', ' }}
{{ group1 | random }}
Выходные данные
John, Pete, Hannah
Pete
select
Выбирает значение указанного атрибута для каждого элемента в массиве и возвращает эти значения в виде массива.
Код
{{ entityview.records | select: 'address1_city' | join: ', ' }}
Вывод
Redmond, New York
shuffle
При применении к массиву возвращает новый массив с теми же элементами, расположенными в случайном порядке.
Код
{{ group1 | join: ', ' }}
{{ group1 | shuffle | join: ', ' }}
Вывод
John, Pete, Hannah
Hannah, John, Pete
size
Возвращает число элементов в массиве.
size также можно использовать с особенной нотацией точки в случаях, когда его необходимо использовать внутри тега.
Код
{% assign words = This is a run of text | split: -%}
{{ words | size }}
{% if words.size == 6 -%}
The text contains 6 words.
{% endif -%}
Вывод
6
The text contains 6 words.
skip
Пропускает указанное число элементов в массиве и возвращает остальные.
Код
{% assign words = This is a run of text | split: %}
{{ words | skip: 3 | join: ', ' }}
Вывод
run, of, text
take
Извлекает указанное число элементов из массива, возвращая эти элементы.
Код
{% assign words = This is a run of text | split: %}
{{ words | take: 3 | join: ', ' }}
Выходные данные
This, is, a
then_by
Добавляет дополнительную последующую сортировку к массиву, уже отсортированному с помощью параметра order_by.
При необходимости можно указать desc в качестве второго параметра для сортировки элементов в убывающем порядке, а не в восходящем.
Код
{{ entityview.records | order_by: 'address1_city' | then_by: 'fullname' | join: ', ' }}
{{ entityview.records | order_by: 'address1_city' | then_by: 'fullname', 'desc' | join: ', ' }}
Вывод
Dave Thomas, Jack Robinson, Jake Johnson, John Smith
John Smith, Jake Johnson, Jack Robinson, Dave Thomas
где
Выбирает все объекты в массиве, у которых указанный атрибут имеет заданное значение.
Код
{% assign redmond = entityview.records | where: 'address1_city', 'Redmond' %}
{% for item in redmond %}
{{ item.fullname }}
{% endfor %}
Вывод
John Smith
Dave Thomas
Jake Johnson
Фильтры по дате
Фильтры по дате можно использовать для арифметических действий с датами или для преобразования значений DateTime в различные форматы.
Дата
Форматирует значение DateTime с помощью строки формата .NET.
Стандартные строки формата даты и времени
Настраиваемые строки формата даты и времени
Код
{{ now | date: 'g' }}
{{ now | date: 'MMMM dd, yyyy' }}
Выходные данные
5/7/2018 7:20 AM
May 07, 2018
date_add_days
Добавляет указанное целое или дробное число дней к значению DateTime. Параметр может быть положительным или отрицательным.
Код
{{ now }}
{{ now | date_add_days: 1 }}
{{ now | date_add_days: -2.5 }}
Выходные данные
5/7/2018 7:20:46 AM
5/8/2018 7:20:46 AM
5/4/2018 7:20:46 PM
date_add_hours
Добавляет указанное целое или дробное число часов к значению DateTime. Параметр может быть положительным или отрицательным.
Код
{{ now }}
{{ now | date_add_hours: 1 }}
{{ now | date_add_hours: -2.5 }}
Выходные данные
5/7/2018 7:20:46 AM
5/7/2018 8:20:46 AM
5/7/2018 4:50:46 AM
date_add_minutes
Добавляет указанное целое или дробное число минут к значению DateTime. Параметр может быть положительным или отрицательным.
Код
{{ now }}
{{ now | date_add_minutes: 10 }}
{{ now | date_add_minutes: -2.5 }}
Выходные данные
5/7/2018 7:20:46 AM
5/7/2018 7:30:46 AM
5/7/2018 7:18:16 AM
date_add_months
Добавляет указанное целое или дробное число месяцев к значению DateTime. Параметр может быть положительным или отрицательным.
Код
{{ now }}
{{ now | date_add_months: 1 }}
{{ now | date_add_months: -2 }}
Выходные данные
5/7/2018 7:20:46 AM
6/7/2018 7:20:46 AM
3/7/2018 7:20:46 AM
date_add_seconds
Добавляет указанное целое или дробное число секунд к значению DateTime. Параметр может быть положительным или отрицательным.
Код
{{ now }}
{{ now | date_add_seconds: 10 }}
{{ now | date_add_seconds: -1.25 }}
Выходные данные
5/7/2018 7:20:46 AM
5/7/2018 7:20:56 AM
5/7/2018 7:20:45 AM
date_add_years
Добавляет указанное целое или дробное число лет к значению DateTime. Параметр может быть положительным или отрицательным.
Код
{{ now }}
{{ now | date_add_years: 1 }}
{{ now | date_add_years: -2 }}
Выходные данные
5/7/2018 7:20:46 AM
5/7/2019 7:20:46 AM
5/7/2016 7:20:46 AM
date_to_iso8601
Форматирует значение DateTime в соответствии со стандартом ISO 8601. Полезно при создании веб-каналов Atom или элементов <time> HTML5.
Код
{{ now | date_to_iso8601 }}
Выходные данные
2018-05-07T07:20:46Z
date_to_rfc822
Форматирует значение DateTime в соответствии со стандартом RFC 822. Полезно при создании RSS-каналов.
Код
{{ now | date_to_rfc822 }}
Выходные данные
Mon, 07 May 2018 07:20:46 Z
Escape-фильтры
Escape-последовательности позволяют включать в строки специальные символы, не нарушая обычной интерпретации этих символов языком программирования или форматом.
Следующие escape-фильтры заменяют строковые символы escape-последовательностями или удаляют недопустимые строковые символы в зависимости от типа назначения.
escape
Кодирует строку с использованием escape-символов HTML.
Код
{{ '<p>test</p>' | escape }}
Выходные данные
<p>test</p>
html_safe_escape
Преобразует заданную строку HTML в безопасный фрагмент HTML.
Код
{{ '<img src="images/myimage.jpg" onerror="alert(1);">' | html_safe_escape }}
Выходные данные
<img src="images/myimage.jpg">
url_escape
Преобразует строку с использованием escape-символов для URI, для включения в URL-адрес.
Код
{{ 'This & that//' | url_escape }}
Выходные данные
This+%26+that%2F%2F
xml_escape
Преобразует строку с использованием escape-символов для XML, для включения в выходные данные XML.
Код
{{ '<p>test</p>' | xml_escape }}
Выходные данные
<p>test</p>
Фильтры списка
Фильтры списка используются для работы с определенными значениями атрибута entitylist и для помощи в создании представлений списка.
current_sort
Получает выражение сортировки и возвращает текущее направление сортировки для указанного атрибута.
Код
{{ 'name ASC, createdon DESC' | current_sort: 'createdon' }}
Выходные данные
DESC
metafilters
Разбирает значение JSON entitylist filter_definition на объекты группы параметров фильтра.
metafilters могут (необязательно) предоставляться с текущим запросом фильтра атрибутов и текущим entitylist, позволяя, чтобы возвращаемые объекты фильтра помечались как выбранные или невыбранные.
Код
{% assign filters = entitylist | metafilters: params.mf, entityview %}
{% if filters.size > 0 %}
<ul id=entitylist-filters>
{% for filter in filters %}
<li class=entitylist-filter-option-group>
{% if filter.selection_mode == 'Single' %}
{% assign type = 'radio' %}
{% else %}
{% assign type = 'checkbox' %}
{% endif %}
<h4 class=entitylist-filter-option-group-label
data-filter-id={{ filter.id | h }}>
{{ filter.label | h }}
</h4>
<ul>
{% for option in filter.options %}
<li class=entitylist-filter-option>
{% if option.type == 'text' %}
<div class=input-group entitylist-filter-option-text>
<span class=input-group-addon>
<span class=fa fa-filter aria-hidden=true></span>
</span>
<input class=form-control
type=text
name={{ filter.id | h }}
value={{ option.text | h }} />
</div>
{% else %}
<div class={{ type | h }}>
<label>
<input
type={{ type | h }}
name={{ filter.id | h }}
value={{ option.id | h }}
{% if option.checked %}
checked=checked
data-checked=true{% endif %}
/>
{{ option.label | h }}
</label>
</div>
{% endif %}
</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
<button class=btn btn-default data-serialized-query=mf data-target=#entitylist-filters>Apply Filters</button>
{% endif %}
reverse_sort
Получает направление сортировки и возвращает противоположное направление сортировки.
Код
<!-- Sort direction is not case-sensitive -->
{{ 'ASC' | reverse_sort }}
{{ 'desc' | reverse_sort }}
Вывод
DESC
ASC
Математические фильтры
Математические фильтры позволяют выполнять математические операции с числами.
Как и любые другие фильтры, математические фильтры можно последовательно объединять, при этом они применяются в порядке слева направо.
Код
{{ 10 | times: 2 | minus: 5 | divided_by: 3 }}
Вывод
5
ceil
Округляет значение вверх до ближайшего целого.
Код
{{ 4.6 | ceil }}
{{ 4.3 | ceil }}
Выходные данные
5
5
divided_by
Делит число на другое число.
Код
{{ 10 | divided_by: 2 }}
{{ 10 | divided_by: 3 }}
{{ 10.0 | divided_by: 3 }}
Выходные данные
5
3
3.333333
floor
Округляет значение вниз до ближайшего целого.
Код
{{ 4.6 | floor }}
{{ 4.3 | floor }}
Вывод
4
4
minus
Вычитает число из другого числа.
Код
<!-- entityview.page = 11 -->
{{ entityview.page | minus: 1 }}
{{ 10 | minus: 1.1 }}
{{ 10.1 | minus: 1 }}
Вывод
10
9
9.1
modulo
Делит число на другое число и возвращает остаток.
Код
{{ 12 | modulo: 5 }}
Вывод
2
plus
Добавляет число к другому числу.
Код
<!-- entityview.page = 11 -->
{{ entityview.page | plus: 1 }}
{{ 10 | plus: 1.1 }}
{{ 10.1 | plus: 1 }}
Вывод
12
11
11.1
round
Округляет значение до ближайшего целого или до указанного числа знаков после запятой.
Код
{{ 4.6 | round }}
{{ 4.3 | round }}
{{ 4.5612 | round: 2 }}
Вывод
5
4
4.56
times
Умножает число на другое число.
Код
{{ 10 | times: 2 }}
{{ 10 | times: 2.2 }}
{{ 10.1 | times: 2 }}
Вывод
20
20
20.2
Строковые фильтры
Строковые фильтры обрабатывают строки.
append
Добавляет строку в конец другой строки.
Код
{{ 'filename' | append: '.js' }}
Выходные данные
filename.js
capitalize
преобразует каждое слово строки в прописные буквы.
Код
{{ 'capitalize me' | capitalize }}
Выходные данные
Capitalize Me
downcase
Преобразует строку в строчные буквы.
Код
{{ 'MIxed Case TExt' | downcase }}
Выходные данные
mixed case text
newline_to_br
Вставит тег новой строки HTML <br /> для каждого разрыва строки в строке.
Код
{% capture text %}
A
B
C
{% endcapture %}
{{ text | newline_to_br }}
Вывод
A<br />
B<br />
C<br />
prepend
Добавляет строку в начало другой строки.
Код
{{ 'Jane Johnson' | prepend: 'Dr. ' }}
Вывод
Dr. Jane Johnson
remove
Удаляет все вхождения подстроки из строки.
Код
{{ 'Hello, Dave. How are you, Dave?' | remove: 'Dave' }}
Выходные данные
Hello, . How are you, ?
remove_first
Удаляет первое вхождение подстроки из строки.
Код
{{ 'Hello, Dave. How are you, Dave?' | remove_first: 'Dave' }}
Вывод
Hello, . How are you, Dave?
replace
Заменяет все вхождения строки на подстроку.
Код
{{ 'Hello, Dave. How are you, Dave?' | replace: 'Dave', 'John' }}
Выходные данные
Hello, John. How are you, John?
replace_first
Заменяет первое вхождение строки на подстроку.
Код
{{ 'Hello, Dave. How are you, Dave?' | replace_first: 'Dave', 'John' }}
Вывод
Hello, John. How are you, Dave?
split
Фильтр split принимает подстроку в качестве параметра. Эта подстрока используется в качестве разделителя, чтобы разделить строку в массив.
Код
{% assign words = This is a demo of the split filter | split: ' ' %}
First word: {{ words.first }}
First word: {{ words[0] }}
Second word: {{ words[1] }}
Last word: {{ words.last }}
All words: {{ words | join: ', ' }}
Выходные данные
First word: This
First word: This
Second word: is
Last word: filter
All words: This, is, a, demo, of, the, split, filter
strip_html
Удаляет все теги HTML из строки.
Код
<p>Hello</p>
Выходные данные
Hello
strip_newlines
Удаляет все знаки перевода строки из строки.
Код
{% capture text %}
A
B
C
{% endcapture %}
{{ text | strip_newlines }}
Выходные данные
ABC
text_to_html
Форматирует обычную текстовую строку как простой HTML. Текст закодирован в формате HTML, блоки текста, разделенные пустой строкой, будут заключены в теги абзаца <p>, одиночные разрывы строк будут заменены на <br>, а URL-адреса преобразованы в гиперссылки.
Код
{{ note.notetext | text_to_html }}
Выходные данные
<p>This is the first paragraph of notetext. It contains a URL: <a href="https://example.com/" rel="nofollow">https://example.com</a></p>
<p>This is a second paragraph.</p>
truncate
Обрезает строку до указанного числа знаков. Многоточие (...) добавляется к строке и включается в число символов.
Код
{{ 'This is a long run of text.' | truncate: 10 }}
Выходные данные
This is...
truncate_words
Обрезает строку до указанного числа слов. Многоточие (...) добавляется в конец обрезанной строки.
Код
{{ 'This is a long run of text.' | truncate_words: 3 }}
Выходные данные
This is a...
upcase
Преобразует строку в заглавные буквы.
Код
{{ 'MIxed Case TExt' | upcase }}
Выходные данные
MIXED CASE TEXT
Фильтры типов
Фильтры типов позволяют преобразовывать значения одного типа в другие типы.
boolean
Пытается преобразовать строковое значение в логическое. Если значение уже является логическим, оно возвращается без изменений. Если значение невозможно преобразовать в логическое, возвращается значение NULL.
Этот фильтр также принимает значения "вкл.", "включено" или "да" как true, и значения "откл.", "отключено" и "нет" как false.
Код
{{ true | boolean }}
{{ 'false' | boolean }}
{{ 'enabled' | boolean }}
{{ settings['something/enabled'] | boolean | default: false }}
Вывод
true
false
true
false
десятичное
Пытается преобразовать строковое значение в десятичное число. Если значение уже является десятичным числом, оно возвращается без изменений. Если значение невозможно преобразовать в десятичное число, возвращается значение NULL.
Код
{{ 10.1 | decimal }}
{{ '3.14' | decimal }}
{{ 'text' | decimal | default: 3.14 }}
Вывод
10.1
3.14
3.14
integer
Пытается преобразовать строковое значение в целое число. Если значение уже является целым числом, оно возвращается без изменений. Если значение невозможно преобразовать в целое число, возвращается значение NULL.
Код
{{ 10 | integer }}
{{ '10' | integer }}
{{ '10.1' | integer }}
{{ 'text' | integer | default: 2 }}
Выходные данные
10
10
2
string
Пытается преобразовать значение в его строковое представление. Если значение уже является строкой, оно возвращается без изменений. Если значение равно NULL, возвращается значение NULL.
Фильтры URL-адреса
Фильтры URL-адреса позволяют генерировать или извлекать части URL-адреса.
add_query
Добавляет параметр строки запроса к URL-адресу. Если параметр уже существует в URL-адресе, значение параметра обновляется.
Если фильтр применяется к полному абсолютному URL-адресу, создается обновленный абсолютный URL-адрес. Если он применяется к пути, получается обновленный путь.
Код
{{ 'https://example.com/path?page=1' | add_query: 'foo', 'bar' }}
{{ '/path?page=1' | add_query: 'page', 2 }}
Выходные данные
https://example.com/path?page=1&foo=bar
/path?page=2
base
Получает базовый URL-адрес для указанного URL-адреса.
Код
{{ 'https://example.com/path?foo=bar&page=2' | base }}
Вывод
https://example.com
host
Получает часть URL-адреса, соответствующую узлу.
Код
{{ 'https://example.com/path?foo=bar&page=2' | host }}
Выходные данные
example.com
path
Получает часть URL-адреса, соответствующую пути.
Код
{{ 'https://example.com/path?foo=bar&page=2' | path }}
{{ '/path?foo=bar&page=2' | path }}
Выходные данные
/path
/path
path_and_query
Получает часть URL-адреса, представляющую путь и запрос.
Код
{{ 'https://example.com/path?foo=bar&page=2' | path_and_query }}
{{ '/path?foo=bar&page=2' | path_and_query }}
Выходные данные
/path?foo=bar&page=2
/path?foo=bar&page=2
port
Получает номер порта URL-адреса.
Код
{{ 'https://example.com/path?foo=bar&page=2' | port }}
{{ 'https://example.com/path?foo=bar&page=2' | port }}
{{ 'https://example.com:9000/path?foo=bar&page=2' | port }}
Выходные данные
80
443
9000
remove_query
Удаляет параметр строки запроса из URL-адреса. Если параметр не существует в URL-адресе, URL-адрес возвращается без изменений.
Если фильтр применяется к полному абсолютному URL-адресу, создается обновленный абсолютный URL-адрес. Если он применяется к пути, получается обновленный путь.
Код
{{ 'https://example.com/path?page=1' | remove_query: 'page' }}
{{ '/path?page=1' | remove_query: 'page' }}
Выходные данные
https://example.com/path
/path
scheme
Получает часть URL-адреса, соответствующую схеме.
Код
{{ 'https://example.com/path?foo=bar&page=2' | scheme }}
{{ 'https://example.com/path?foo=bar&page=2' | scheme }}
Вывод
http
https
Дополнительные фильтры
Эти фильтры предоставляют полезные общие функции.
default
Возвращает значение по умолчанию для любой переменной, которой не назначено значение (т. е., NULL).
Код
{{ snippets[Header] | default: 'My Website' }}
Выходные данные
<!-- If a snippet with the name Header returns null -->
My Website
file_size
При применении к числовому значению, представляющему много байтов, возвращается отформатированный размер файла с единицей измерения соответствующего масштаба.
Если требуется, можно передать параметр точности, чтобы управлять количеством десятичных знаков в результате. Точность по умолчанию — 1.
Код
{{ 10000000 | file_size }}
{{ 2050 | file_size: 0 }}
{{ entity.notes.first.filesize | file_size: 2 }}
Выходные данные
9.5 MB
2 KB
207.14 KB
ч
Предоставляет HTML-представление атрибута. Например, показано HTML-представление XML-атрибута FetchXML запроса.
Код
{{ samplequery.xml | h }}
Выходные данные
<fetch mapping="logical" count="5000" page="1" returntotalrecordcount="true"> <entity name="contact"> <attribute name="fullname" /> </entity> </fetch>
has_role
При применении к user возвращает значение true, если пользователь принадлежит указанной роли. В противном случае возвращает значение false.
Код
{% assign is_admin = user | has_role: 'Administrators' %}
{% if is_admin %}
User is an administrator.
{% endif %}
liquid
Представляет строку в виде кода Liquid. Этот код имеет доступ к текущему контексту выполнения Liquid (переменные и т. д.).
Заметка
Этот фильтр должен использоваться с осторожностью и обычно должен применяться только к значениям, находящимся под монопольным управлением авторов содержимого сайта или других пользователей, которым можно доверить написание кода Liquid.
Код
{{ page.adx_copy | liquid }}