Доступні фільтри Liquid
Фільтри Liquid використовуються для змінення виводу рядків, чисел, змінних та об'єктів. Вони відокремлені від значення, до якого вони застосовуються, за допомогою |.
{{ 'hal 9000' | upcase }} <!-- Output: HAL 9000 -->
Деякі фільтри приймають параметри. Фільтри також можуть бути поєднані і застосовуватися в порядку зліва направо.
{{ 2 | times: 2 | minus: 1 }} <!-- Output: 3 -->
{{ "Hello, " | append: user.firstname }} <!-- Output: Hello, Dave -->
Розділ нижче описує різні фільтри.
Фільтри масиву
Фільтри масиву використовуються для роботи з масивами.
пакетний
Ділить масив на декілька масивів заданого розміру.
Код
{% 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 відтворює новий масив, який складається з оригінального масиву із заданим елемента як останнім.
Код
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
за винятком
Виберіть усі об'єкти в масиві, де вказаний атрибут не має вказаного значенню. (це є оберненим до де.)
Код
{% assign redmond = entityview.records | except: 'address1_city', 'Redmond' %}
{% for item in redmond %}
{{ item.fullname }}
{% endfor %}
Вихідний файл
Jack Robinson
Перший
Відтворює перший елемент масиву.
перший можна також використовувати зі спеціальною точковою нотацією, у випадках, коли її потрібно використати всередині тегу.
Код
{% 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.
групувати за
Групування елементів у масиві за вказаним атрибутом.
Код
{% 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
приєднатися
Приєднує елементи масиву із символом, що передається як параметр. Результатом є одиночний рядок.
Код
{% assign words = This is a run of text | split: %}
{{ words | join: , }}
Вихідний файл
This, is, a, run, of, text
Останній
Відтворює останній елемент масиву.
останній можна також використовувати зі спеціальною точковою нотацією, у випадках, коли її потрібно використати всередині тегу.
Код
{% 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.
сортувати за
Повертає елементи масиву, розміщені в порядку, заданому вказаним атрибутом елементів масиву.
За бажанням, ви можете вказати 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
випадковий
Відтворює один елемент, випадково вибраний з масиву.
Код
{{ group1 | join: ', ' }}
{{ group1 | random }}
Вихідний файл
John, Pete, Hannah
Pete
виберіть
Вибирає значення вказаного атрибута для кожного елемента у масиві та відтворює ці значення як масив.
Код
{{ entityview.records | select: 'address1_city' | join: ', ' }}
Вихідний файл
Redmond, New York
довільно
У разі застосування до масиву, відтворює новий масив з тими самими елементами в довільному порядку.
Код
{{ group1 | join: ', ' }}
{{ group1 | shuffle | join: ', ' }}
Вихідний файл
John, Pete, Hannah
Hannah, John, Pete
розмір
Відтворює кількість елементів у масиві.
розмір можна також використовувати зі спеціальною точковою нотацією, у випадках, коли її потрібно використати всередині тегу.
Код
{% 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.
пропустити
Пропускає задану кількість елементів у масиві та показує залишок.
Код
{% assign words = This is a run of text | split: %}
{{ words | skip: 3 | join: ', ' }}
Вихідний файл
run, of, text
брати
Бере задану кількість елементів з масиву, відображаючи взяті елементи.
Код
{% assign words = This is a run of text | split: %}
{{ words | take: 3 | join: ', ' }}
Вихідний файл
This, is, a
а потім за
Додає додаткові подальші сортування до масиву, що вже відсортований через «сортувати за».
За бажанням, ви можете вказати 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
Фільтри дати
Фільтри дат можуть використовуватися для підрахунку дат або перетворення значення дати й часу в різні формати.
дата
Форматує значення дати й часу за допомогою рядка формату .NET.
Стандартні рядки формату дати і часу
Настроювані рядки формату дати і часу
Код
{{ now | date: 'g' }}
{{ now | date: 'MMMM dd, yyyy' }}
Вихідний файл
5/7/2018 7:20 AM
May 07, 2018
date_add_days
Додає певну кількість цілих та дробових значень доби до значення дати й часу. Параметр може бути позитивними або негативними.
Код
{{ 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
Додає вказану кількості цілих та дробових значень годин до значення дати й часу. Параметр може бути позитивними або негативними.
Код
{{ 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
Додає певну кількість цілих та дробове значень хвилин до значення дати й часу. Параметр може бути позитивними або негативними.
Код
{{ 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
Додає певну кількість цілих та дробових значень місяця до значення дати й часу. Параметр може бути позитивними або негативними.
Код
{{ 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
Додає вказану кількість цілих та дробових значень секунд до значення дати й часу. Параметр може бути позитивними або негативними.
Код
{{ 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
Додає певну кількість цілих та дробових значень року до значення дати й часу. Параметр може бути позитивними або негативними.
Код
{{ 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
Форматує значення дати й часу відповідно до стандарту ISO 8601. Корисно при створенні Каналів Atom, або елемента HTML5 <час>.
Код
{{ now | date_to_iso8601 }}
Вихідний файл
2018-05-07T07:20:46Z
date_to_rfc822
Форматує значення дати й часу відповідно до стандарту RFC 822. Корисно при створенні RSS-каналів.
Код
{{ now | date_to_rfc822 }}
Вихідний файл
Mon, 07 May 2018 07:20:46 Z
Фільтри виходу
Послідовності виходу забезпечують включення спеціальних символів до рядків без конфліктів із регулярною інтерпретацією цих символів мовою або форматом програмування.
Наведений нижче фільтр виходу замінює символи рядка на послідовності виходу або видаляє недійсні символи рядка на основі типу місця призначення.
вийти
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
URI-пропуск рядка, для включення в URL-адресу.
Код
{{ 'This & that//' | url_escape }}
Вихідний файл
This+%26+that%2F%2F
xml_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 у групі об'єктів параметрів фільтра.
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 %}
зворотне сортування
Враховуючи напрямок сортування, відтворює протилежний напрямок сортування.
Код
<!-- Sort direction is not case-sensitive -->
{{ 'ASC' | reverse_sort }}
{{ 'desc' | reverse_sort }}
Вихідний файл
DESC
ASC
Математичні фільтри
Математичні фільтри дозволяють виконувати математичні операції з числами.
Як і всі фільтри, математичні фільтри можуть бути зв’язані і застосовуються в порядку зліва направо.
Код
{{ 10 | times: 2 | minus: 5 | divided_by: 3 }}
Вихідний файл
5
стеля
Округлення до вищого цілого значення.
Код
{{ 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
нижче значення
Округлення до нижчого цілого значення.
Код
{{ 4.6 | floor }}
{{ 4.3 | floor }}
Вихідний файл
4
4
мінус
Віднімає число від іншого числа.
Код
<!-- entityview.page = 11 -->
{{ entityview.page | minus: 1 }}
{{ 10 | minus: 1.1 }}
{{ 10.1 | minus: 1 }}
Вихідний файл
10
9
9.1
за модулем
Розділяє число на інше число і показує залишок від ділення.
Код
{{ 12 | modulo: 5 }}
Вихідний файл
2
плюс
Додає число до іншого числа.
Код
<!-- entityview.page = 11 -->
{{ entityview.page | plus: 1 }}
{{ 10 | plus: 1.1 }}
{{ 10.1 | plus: 1 }}
Вихідний файл
12
11
11.1
округлення
Округлює значення до найближчого цілого або вказаного десяткового числа.
Код
{{ 4.6 | round }}
{{ 4.3 | round }}
{{ 4.5612 | round: 2 }}
Вихідний файл
5
4
4.56
помножити
Множить число на інше число.
Код
{{ 10 | times: 2 }}
{{ 10 | times: 2.2 }}
{{ 10.1 | times: 2 }}
Вихідний файл
20
20
20.2
Фільтри рядків
Фільтри рядків маніпулюють рядками.
append
Додає рядок в кінець іншого рядка.
Код
{{ 'filename' | append: '.js' }}
Результат
filename.js
велика буква
Пише кожне слово в рядку з великої літери.
Код
{{ 'capitalize me' | capitalize }}
Результат
Capitalize Me
нижній регістр
Перетворює рядок у символи нижнього регістру.
Код
{{ '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 />
додати на початок
Додає рядок до початку іншого рядка.
Код
{{ 'Jane Johnson' | prepend: 'Dr. ' }}
Вихідний файл
Dr. Jane Johnson
видалити
Видаліть всі повтори підрядка із рядка.
Код
{{ '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?
замінити
Замінює всі повтори рядка із підрядком.
Код
{{ '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 набуває підрядок як параметр. Підрядок використовується як роздільник для розділення рядка в масив.
Код
{% 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>
скорочувати
Обрізає рядок до вказаної кількості знаків. Три крапки (...) додаються до рядка і входять у підрахунок символів.
Код
{{ '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...
верхній регістр
Перетворює рядок у великі літери.
Код
{{ 'MIxed Case TExt' | upcase }}
Вихідний файл
MIXED CASE TEXT
Фільтри типів
Фільтри типів дають змогу перетворити значення одного типу в інших типи.
логічний
Спроби перетворити значення рядка в логічне значення. Якщо значення вже є логічним, його буде відтворено без змін. Якщо значення не можна перетворити на логічне, буде відтворено нуль.
Цей фільтр також буде приймати "увімк.", "активовано" або "так" як "істинність" і "вимк.", "дезактивовано" та "ні" як "хибність".
Код
{{ true | boolean }}
{{ 'false' | boolean }}
{{ 'enabled' | boolean }}
{{ settings['something/enabled'] | boolean | default: false }}
Вихідний файл
true
false
true
false
десяткове число
Спроби перетворити значення рядка в десяткове число. Якщо значення вже є десятковим числом, його буде відтворено без змін. Якщо значення не можна перетворити на десяткове число, буде відтворено нуль.
Код
{{ 10.1 | decimal }}
{{ '3.14' | decimal }}
{{ 'text' | decimal | default: 3.14 }}
Вихідний файл
10.1
3.14
3.14
ціле число
Спроби перетворити значення рядка в ціле число. Якщо значення вже є цілим числом, його буде відтворено без змін. Якщо значення не можна перетворити на ціле число, буде відтворено нуль.
Код
{{ 10 | integer }}
{{ '10' | integer }}
{{ '10.1' | integer }}
{{ 'text' | integer | default: 2 }}
Вихідний файл
10
10
2
рядок
Спроби перетворити значення в представлення рядка. Якщо значення вже є рядком, його буде відтворено без змін. Якщо значення нуль, буде відтворено нуль.
Фільтри 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
база
Отримує базову URL-адресу певної URL-адреси.
Код
{{ 'https://example.com/path?foo=bar&page=2' | base }}
Вихідний файл
https://example.com
хост
Отримує частину з хостом із URL-адреси.
Код
{{ 'https://example.com/path?foo=bar&page=2' | host }}
Вихідний файл
example.com
шлях
Отримує частину зі шляхом із 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
порт
Отримує номер порту в 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
схема
Отримує частину зі схемою із URL-адреси.
Код
{{ 'https://example.com/path?foo=bar&page=2' | scheme }}
{{ 'https://example.com/path?foo=bar&page=2' | scheme }}
Вихідний файл
http
https
Додаткові фільтри
Ці фільтри забезпечують корисні загальні функції.
за замовчуванням
Відтворює значення за промовчанням для будь-якої змінної без призначеного значення (тобто нуль).
Код
{{ 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
h
Забезпечує представлення атрибута у форматі 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
Застосовується до користувача, відтворюється true, якщо користувач належить до цієї ролі. Відтворює "хибність", якщо ні.
Код
{% assign is_admin = user | has_role: 'Administrators' %}
{% if is_admin %}
User is an administrator.
{% endif %}
liquid
Показує рядок як код Liquid. Цей код буде мати доступ до поточного контексту виконання Liquid (змінні і т. д.).
Нотатка
Цей фільтр слід використовувати з обережністю і загалом застосовувати лише до значень, які знаходяться під винятковим контролем авторів вмісту сайту, або інших користувачів, яким можна довірити писати код Liquid.
Код
{{ page.adx_copy | liquid }}