Споделяне чрез


Налични филтри на Liquid

Филтрите на Liquid се използват за промяна на изхода на низове, числа, променливи и обекти. Те се отделят от стойността, към която се прилагат, чрез a |.

{{ '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

Съединява два масива в един нов масив.

При подаване на един елемент като параметър „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

с изключение на

Изберете всички обекти в масив, където даден атрибут няма зададена стойност. (Това е обратното на where.)

Код

{% 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.

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

последна

Връща последния елемент от даден масив.

„последен” може също да се използва при специално точково записване в случаите, когато е необходимо да се използва в етикет.

Код

{% 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

Връща броя на елементите в масив.

„размер” може също да се използва при специално точково записване в случаите, когато е необходимо да се използва в етикет.

Код

{% 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

Филтри за дата

Филтрите за дата могат да се използват за операции с дати или за преобразуване на стойности за дата и час в различни формати.

дата

Форматира стойност за дата и час с помощта на стойност на .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

Филтри за escape

Escape последователностите за превключване предоставят начин за включване на специални символи в низове, без да влизат в конфликт с обичайната интерпретация на тези знаци от програмния език или формат.

Следните екраниращи филтри заменят символите на низа с екраниращи последователности или премахват невалидни символи на низ въз основа на типа дестинация.

escape

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

Филтри за низове

Филтрите за низове манипулират низове.

добавяне

Добавя низ към края на друг низ.

Код

{{ '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

Филтърът „разделяне” взема подниз като параметър. Поднизът се използва като разделител за разделяне на низ в масив.

Код

{% 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

decimal

Опитва да преобразува стойност на низ в десетично число. Ако стойността вече е десетично число, се връща без промяна. Ако стойността не може да бъде преобразувана в десетично число, ще се върне 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

Прилага се към потребител, връща „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 }}

Вижте също