Поділитися через


Доступні фільтри 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 }}

Вихід

&lt;p&gt;test&lt;/p&gt;

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 }}

Вихід

&lt;p&gt;test&lt;/p&gt;

Фільтри списків

Фільтри списку використовуються для роботи з окремими значеннями атрибутів 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 }}

Див. також