Налични филтри на 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 }}
Резултат
<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 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 }}