Доступні фільтри 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
Форматує значення DateTime відповідно до стандарту 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-представлення FetchXML атрибута XML запиту.
Код
{{ 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.
Код
{{ page.adx_copy | liquid }}