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


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

Вихідний файл

&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 атрибута 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 }}

Див. також