Dostupné filtry Liquid
Filtry Liquid se používají k úpravě výstupu řetězců, čísel, proměnných a objektů. Jsou odděleny od hodnoty, na kterou mají být použity, pomocí |.
{{ 'hal 9000' | upcase }} <!-- Output: HAL 9000 -->
Některé filtry přijímají parametry. Filtry lze také kombinovat a jsou použity v pořadí zleva doprava.
{{ 2 | times: 2 | minus: 1 }} <!-- Output: 3 -->
{{ "Hello, " | append: user.firstname }} <!-- Output: Hello, Dave -->
Následující sekce popisuje různé filtry.
Filtry polí
Filtry polí se používají pro práci s poli.
batch
Rozdělí pole na více polí dané velikosti.
Kód
{% assign batches = entityview.records | batch: 2 %}
{% for batch in batches %}
<ul>
{% for item in batch %}
<li>{{ item.fullname }}</li>
{% endfor %}
</ul>
{% endfor %}
Výstup
<ul>
<li>John Smith</li>
<li>Dave Thomas</li>
</ul>
<ul>
<li>Jake Johnson</li>
<li>Jack Robinson</li>
</ul>
concat
Zřetězí dvě pole do jednoho nového pole.
Pokud je jedna položka uvedena jako parametr, položka concat vrátí nové pole, které se skládá z původního pole s danou položkou jako posledním prvkem.
Kód
Group #1: {{ group1 | join: ', ' }}
Group #2: {{ group2 | join: ', ' }}
Group #1 + Group #2: {{ group1 | concat: group2 | join: ', ' }}
Výstup
Group #1: John, Pete, Hannah
Group #2: Joan, Bill
Group #1 + Group #2: John, Pete, Hannah, Joan, Bill
except
Vyberte všechny objekty v poli, kde daný atribut nemá danou hodnotu. (Jedná se o opak where.)
Kód
{% assign redmond = entityview.records | except: 'address1_city', 'Redmond' %}
{% for item in redmond %}
{{ item.fullname }}
{% endfor %}
Výstup
Jack Robinson
1\.
Vrátí první prvek pole.
first lze také použít se speciálním zápisem s tečkou pro případ, kdy je potřeba zápis použít uvnitř značky.
Kód
{% assign words = This is a run of text | split: %}
{{ words | first }}
{% if words.first == This %}
The first word is This.
{% endif %}
Výstup
This
The first word is This.
group_by
Seskupení položek v poli podle daného atributu.
Kód
{% assign groups = entityview.records | group_by: 'address1_city' %}
{% for group in groups %}
{{ group.key }}:
{% for item in group.items %}
{{ item.fullname }}
{% endfor %}
{% endfor %}
Výstup
Redmond:
John Smith
Dave Thomas
Jake Johnson
New York:
Jack Robinson
join
Spojí prvky pole se znakem, který je předán jako parametr. Výsledkem je jeden řetězec.
Kód
{% assign words = This is a run of text | split: %}
{{ words | join: , }}
Výstup
This, is, a, run, of, text
Poslední
Vrátí poslední prvek pole.
last lze také použít se speciálním zápisem s tečkou pro případ, kdy je potřeba zápis použít uvnitř značky.
Kód
{% assign words = This is a run of text | split: -%}
{{ words | last }}
{% if words.last == text -%}
The last word is text.
{% endif -%}
Výstup
text
The last word is text.
order_by
Vrátí prvky pole seřazené podle daného atributu prvků pole.
Volitelně můžete zadat desc jako druhý parametr, čímž budou prvky seřazeny v sestupném pořadí, nikoli vzestupném.
Kód
{{ entityview.records | order_by: 'fullname' | join: ', ' }}
{{ entityview.records | order_by: 'fullname', 'desc' | join: ', ' }}
Výstup
Dave Thomas, Jack Robinson, Jake Johnson, John Smith
John Smith, Jake Johnson, Jack Robinson, Dave Thomas
random
Vrátí jednu náhodně vybranou položku z pole.
Kód
{{ group1 | join: ', ' }}
{{ group1 | random }}
Výstup
John, Pete, Hannah
Pete
select
Vybere hodnotu daného atributu pro každou položku v poli a vrátí tyto hodnoty jako pole.
Kód
{{ entityview.records | select: 'address1_city' | join: ', ' }}
Výstup
Redmond, New York
shuffle
Po použití na pole vrátí nové pole se stejnými položkami v náhodném pořadí.
Kód
{{ group1 | join: ', ' }}
{{ group1 | shuffle | join: ', ' }}
Výstup
John, Pete, Hannah
Hannah, John, Pete
size
Vrátí počet položek v poli.
size lze také použít se speciálním zápisem s tečkou pro případ, kdy je potřeba zápis použít uvnitř značky.
Kód
{% assign words = This is a run of text | split: -%}
{{ words | size }}
{% if words.size == 6 -%}
The text contains 6 words.
{% endif -%}
Výstup
6
The text contains 6 words.
skip
Přeskočí zadaný počet prvků v poli a vrátí zbytek.
Kód
{% assign words = This is a run of text | split: %}
{{ words | skip: 3 | join: ', ' }}
Výstup
run, of, text
take
Vezme daný počet položek z pole a vrátí tyto položky.
Kód
{% assign words = This is a run of text | split: %}
{{ words | take: 3 | join: ', ' }}
Výstup
This, is, a
then_by
Přidá další následné řazení na pole, které již bylo seřazeno pomocí order_by.
Volitelně můžete zadat desc jako druhý parametr, čímž budou prvky seřazeny v sestupném pořadí, nikoli vzestupném.
Kód
{{ entityview.records | order_by: 'address1_city' | then_by: 'fullname' | join: ', ' }}
{{ entityview.records | order_by: 'address1_city' | then_by: 'fullname', 'desc' | join: ', ' }}
Výstup
Dave Thomas, Jack Robinson, Jake Johnson, John Smith
John Smith, Jake Johnson, Jack Robinson, Dave Thomas
kde
Vyberte všechny objekty v poli, kde daný atribut má danou hodnotu.
Kód
{% assign redmond = entityview.records | where: 'address1_city', 'Redmond' %}
{% for item in redmond %}
{{ item.fullname }}
{% endfor %}
Výstup
John Smith
Dave Thomas
Jake Johnson
Filtry dat
Filtry dat lze použít pro aritmetické operace s daty nebo pro převedení hodnoty DateTime do různých formátů.
datum
Formátuje hodnotu DateTime pomocí formátovacího řetězce .NET.
Řetězce standardního formátu data a času
Řetězce vlastního formátu data a času
Kód
{{ now | date: 'g' }}
{{ now | date: 'MMMM dd, yyyy' }}
Výstup
5/7/2018 7:20 AM
May 07, 2018
date_add_days
Přidá k hodnotě DateTime zadaný počet celých dnů i částí dnů. Parametr může být kladné nebo záporné číslo.
Kód
{{ now }}
{{ now | date_add_days: 1 }}
{{ now | date_add_days: -2.5 }}
Výstup
5/7/2018 7:20:46 AM
5/8/2018 7:20:46 AM
5/4/2018 7:20:46 PM
date_add_hours
Přidá k hodnotě DateTime zadaný počet celých hodin i částí hodin. Parametr může být kladné nebo záporné číslo.
Kód
{{ now }}
{{ now | date_add_hours: 1 }}
{{ now | date_add_hours: -2.5 }}
Výstup
5/7/2018 7:20:46 AM
5/7/2018 8:20:46 AM
5/7/2018 4:50:46 AM
date_add_minutes
Přidá k hodnotě DateTime zadaný počet celých minut i částí minut. Parametr může být kladné nebo záporné číslo.
Kód
{{ now }}
{{ now | date_add_minutes: 10 }}
{{ now | date_add_minutes: -2.5 }}
Výstup
5/7/2018 7:20:46 AM
5/7/2018 7:30:46 AM
5/7/2018 7:18:16 AM
date_add_months
Přidá k hodnotě DateTime zadaný počet celých měsíců. Parametr může být kladné nebo záporné číslo.
Kód
{{ now }}
{{ now | date_add_months: 1 }}
{{ now | date_add_months: -2 }}
Výstup
5/7/2018 7:20:46 AM
6/7/2018 7:20:46 AM
3/7/2018 7:20:46 AM
date_add_seconds
Přidá k hodnotě DateTime zadaný počet celých sekund i částí sekund. Parametr může být kladné nebo záporné číslo.
Kód
{{ now }}
{{ now | date_add_seconds: 10 }}
{{ now | date_add_seconds: -1.25 }}
Výstup
5/7/2018 7:20:46 AM
5/7/2018 7:20:56 AM
5/7/2018 7:20:45 AM
date_add_years
Přidá k hodnotě DateTime zadaný počet celých let. Parametr může být kladné nebo záporné číslo.
Kód
{{ now }}
{{ now | date_add_years: 1 }}
{{ now | date_add_years: -2 }}
Výstup
5/7/2018 7:20:46 AM
5/7/2019 7:20:46 AM
5/7/2016 7:20:46 AM
date_to_iso8601
Formátuje hodnotu DateTime podle standardu ISO 8601. Užitečné při vytváření informačních kanálů standardu Atom nebo prvku <time> HTML5.
Kód
{{ now | date_to_iso8601 }}
Výstup
2018-05-07T07:20:46Z
date_to_rfc822
Formátuje hodnotu DateTime podle standardu RFC 822. Užitečné při vytváření informačních kanálů RSS.
Kód
{{ now | date_to_rfc822 }}
Výstup
Mon, 07 May 2018 07:20:46 Z
Filtry řídicích znaků
Řídicí sekvence poskytují způsob, jak zahrnout speciální znaky do řetězců, aniž by došlo ke konfliktu s běžnou interpretací těchto znaků programovacím jazykem nebo formátem.
Následující filtry řídicích znaků nahrazují znaky řetězce řídicími sekvencemi nebo odstraňují neplatné znaky řetězce na základě typu cíle.
escape
HTML - řídicí řetězec.
Kód
{{ '<p>test</p>' | escape }}
Výstup
<p>test</p>
html_safe_escape
Převede daný řetězec HTML na bezpečný fragment HTML.
Kód
{{ '<img src="images/myimage.jpg" onerror="alert(1);">' | html_safe_escape }}
Výstup
<img src="images/myimage.jpg">
url_escape
Řídicí řetězec identifikátoru URI umožňující zahrnutí do adresy URL.
Kód
{{ 'This & that//' | url_escape }}
Výstup
This+%26+that%2F%2F
xml_escape
Řídicí řetězec XML umožňující zahrnutí výstupu ve formátu XML.
Kód
{{ '<p>test</p>' | xml_escape }}
Výstup
<p>test</p>
Filtry seznamu
Filtry seznamu se používají pro práci s určitými hodnotami atributu entitylist a pro pomoc při tvorbě zobrazení seznamu.
current_sort
Pokud je zadán výraz řazení, vrací aktuální směr řazení pro daný atribut.
Kód
{{ 'name ASC, createdon DESC' | current_sort: 'createdon' }}
Výstup
DESC
metafilters
Analyzuje hodnotu JSON entitylist filter_definition objektů skupiny možností filtru.
metafilters lze volitelně zadávat s aktuálním dotazem filtru atributu a aktuálním atributem entitylist, což umožňuje označení vrácených objektů filtrování jako vybrané nebo nevybrané.
Kód
{% 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
Pokud je zadán směr řazení, vrací opačný směr řazení.
Kód
<!-- Sort direction is not case-sensitive -->
{{ 'ASC' | reverse_sort }}
{{ 'desc' | reverse_sort }}
Výstup
DESC
ASC
Matematické filtry
Matematické filtry umožňují provádět matematické operace s čísly..
Stejně jako všechny ostatní filtry lze i matematické filtry řetězit a jsou používány v pořadí zleva doprava.
Kód
{{ 10 | times: 2 | minus: 5 | divided_by: 3 }}
Výstup
5
ceil
Zaokrouhlí hodnotu na nejbližší vyšší celé číslo.
Kód
{{ 4.6 | ceil }}
{{ 4.3 | ceil }}
Výstup
5
5
divided_by
Vydělí číslo jiným číslem.
Kód
{{ 10 | divided_by: 2 }}
{{ 10 | divided_by: 3 }}
{{ 10.0 | divided_by: 3 }}
Výstup
5
3
3.333333
floor
Zaokrouhlí hodnotu na nejbližší nižší celé číslo.
Kód
{{ 4.6 | floor }}
{{ 4.3 | floor }}
Výstup
4
4
minus
Odečte číslo od jiného čísla.
Kód
<!-- entityview.page = 11 -->
{{ entityview.page | minus: 1 }}
{{ 10 | minus: 1.1 }}
{{ 10.1 | minus: 1 }}
Výstup
10
9
9.1
modulo
Vydělí číslo jiným číslem a vrátí zbytek.
Kód
{{ 12 | modulo: 5 }}
Výstup
2
plus
Přičte číslo k jinému číslu.
Kód
<!-- entityview.page = 11 -->
{{ entityview.page | plus: 1 }}
{{ 10 | plus: 1.1 }}
{{ 10.1 | plus: 1 }}
Výstup
12
11
11.1
round
Zaokrouhlí hodnotu na nejbližší celé číslo nebo na určený počet desetinných míst.
Kód
{{ 4.6 | round }}
{{ 4.3 | round }}
{{ 4.5612 | round: 2 }}
Výstup
5
4
4.56
times
Vynásobí číslo jiným číslem.
Kód
{{ 10 | times: 2 }}
{{ 10 | times: 2.2 }}
{{ 10.1 | times: 2 }}
Výstup
20
20
20.2
Filtry řetězců
Filtry řetězců manipulují s řetězci.
připojit
Připojí řetězec na konec jiného řetězce.
Kód
{{ 'filename' | append: '.js' }}
Výstup
filename.js
capitalize
změní první písmeno v každém slově v řetězci na velké.
Kód
{{ 'capitalize me' | capitalize }}
Výstup
Capitalize Me
downcase
Převede řetězec na malá písmena.
Kód
{{ 'MIxed Case TExt' | downcase }}
Výstup
mixed case text
newline_to_br
Vloží značku HTML zalomení řádku <br /> u každého odřádkování v řetězci.
Kód
{% capture text %}
A
B
C
{% endcapture %}
{{ text | newline_to_br }}
Výstup
A<br />
B<br />
C<br />
prepend
Předřadí řetězec na začátek jiného řetězce.
Kód
{{ 'Jane Johnson' | prepend: 'Dr. ' }}
Výstup
Dr. Jane Johnson
remove
Odeberte všechny výskyty podřetězců z řetězce.
Kód
{{ 'Hello, Dave. How are you, Dave?' | remove: 'Dave' }}
Výstup
Hello, . How are you, ?
remove_first
Odeberte první výskyt podřetězce z řetězce.
Kód
{{ 'Hello, Dave. How are you, Dave?' | remove_first: 'Dave' }}
Výstup
Hello, . How are you, Dave?
replace
Nahradí všechny výskyty řetězce podřetězcem.
Kód
{{ 'Hello, Dave. How are you, Dave?' | replace: 'Dave', 'John' }}
Výstup
Hello, John. How are you, John?
replace_first
Nahradí první výskyt řetězce podřetězcem.
Kód
{{ 'Hello, Dave. How are you, Dave?' | replace_first: 'Dave', 'John' }}
Výstup
Hello, John. How are you, Dave?
split
Filtr split převezme podřetězec jako parametr. Podřetězec se používá jako oddělovač pro rozdělení řetězce do pole.
Kód
{% 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: ', ' }}
Výstup
First word: This
First word: This
Second word: is
Last word: filter
All words: This, is, a, demo, of, the, split, filter
strip_html
Odstraní všechny značky HTML v řetězci.
Kód
<p>Hello</p>
Výstup
Hello
strip_newlines
Odstraní všechny konce řádků z řetězce.
Kód
{% capture text %}
A
B
C
{% endcapture %}
{{ text | strip_newlines }}
Výstup
ABC
text_to_html
Naformátuje řetězec prostého textu jako jednoduché HTML. Text je kódován v jazyku HTML, bloky textu oddělené prázdným řádkem budou zabaleny mezi značky odstavce <p>, jednoduchá odřádkování jsou nahrazena <br> a adresy URL jsou převedeny na hypertextové odkazy.
Kód
{{ note.notetext | text_to_html }}
Výstup
<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
Zkrátí řetězec na daný počet znaků. Tři tečky (...) se připojí k řetězci a jsou součástí počtu znaků.
Kód
{{ 'This is a long run of text.' | truncate: 10 }}
Výstup
This is...
truncate_words
Zkrátí řetězec na daný počet slov. Tři tečky (...) se připojily ke zkrácenému řetězci.
Kód
{{ 'This is a long run of text.' | truncate_words: 3 }}
Výstup
This is a...
upcase
Převede řetězec na velká písmena.
Kód
{{ 'MIxed Case TExt' | upcase }}
Výstup
MIXED CASE TEXT
Filtry typů
Filtry typů vám umožňují převést hodnoty jednoho typu na jiné typy.
boolean
Pokusí se převést hodnotu řetězce na logickou hodnotu. Pokud je již hodnota logickou hodnotou, je vrácena nezměněna. Pokud hodnotu nelze převést na logickou hodnotu, bude vráceno null.
Tento filtr bude také přijímat zapnuto, povoleno nebo ano jako true a vypnuto, zakázáno a ne jako false.
Kód
{{ true | boolean }}
{{ 'false' | boolean }}
{{ 'enabled' | boolean }}
{{ settings['something/enabled'] | boolean | default: false }}
Výstup
true
false
true
false
decimal
Pokusí se převést hodnotu řetězce na desetinnou hodnotu. Pokud je již hodnota desetinným číslem, je vrácena nezměněna. Pokud hodnotu nelze převést na desetinné číslo, bude vráceno null.
Kód
{{ 10.1 | decimal }}
{{ '3.14' | decimal }}
{{ 'text' | decimal | default: 3.14 }}
Výstup
10.1
3.14
3.14
integer
Pokusí se převést hodnotu řetězce na celočíselnou hodnotu. Pokud je již hodnota celočíselnou hodnotou, je vrácena nezměněna. Pokud hodnotu nelze převést na celočíselnou hodnotu, bude vráceno null.
Kód
{{ 10 | integer }}
{{ '10' | integer }}
{{ '10.1' | integer }}
{{ 'text' | integer | default: 2 }}
Výstup
10
10
2
string
Pokusí se převést hodnotu na její řetězcovou reprezentaci. Pokud je již hodnota řetězcem, je vrácena nezměněna. Pokud je hodnota null, bude vráceno null.
Filtry adres URL
Filtry adres URL umožňují sestavit nebo extrahovat části adres URL.
add_query
Přidá parametr řetězce dotazu k adrese URL. Pokud parametr v adrese URL již existuje, je hodnota parametru aktualizována.
Pokud se tento filtr použije na úplnou absolutní adresu URL, je výsledkem aktualizovaná absolutní adresa URL. Je-li použit na cestu, je výsledkem aktualizovaná cesta.
Kód
{{ 'https://example.com/path?page=1' | add_query: 'foo', 'bar' }}
{{ '/path?page=1' | add_query: 'page', 2 }}
Výstup
https://example.com/path?page=1&foo=bar
/path?page=2
base
Získá základní adresu URL dané adresy URL.
Kód
{{ 'https://example.com/path?foo=bar&page=2' | base }}
Výstup
https://example.com
host
Získá součást hostitele adresy URL.
Kód
{{ 'https://example.com/path?foo=bar&page=2' | host }}
Výstup
example.com
path
Získá součást cesty adresy URL.
Kód
{{ 'https://example.com/path?foo=bar&page=2' | path }}
{{ '/path?foo=bar&page=2' | path }}
Výstup
/path
/path
path_and_query
Získá součást cesty a dotazu adresy URL.
Kód
{{ 'https://example.com/path?foo=bar&page=2' | path_and_query }}
{{ '/path?foo=bar&page=2' | path_and_query }}
Výstup
/path?foo=bar&page=2
/path?foo=bar&page=2
port
Získá číslo portu adresy URL.
Kód
{{ '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 }}
Výstup
80
443
9000
remove_query
Odstraní parametr řetězce dotazu z adresy URL. Pokud parametr v adrese URL neexistuje, je adresa URL vrácena beze změny.
Pokud se tento filtr použije na úplnou absolutní adresu URL, je výsledkem aktualizovaná absolutní adresa URL. Je-li použit na cestu, je výsledkem aktualizovaná cesta.
Kód
{{ 'https://example.com/path?page=1' | remove_query: 'page' }}
{{ '/path?page=1' | remove_query: 'page' }}
Výstup
https://example.com/path
/path
scheme
Získá součást schématu adresy URL.
Kód
{{ 'https://example.com/path?foo=bar&page=2' | scheme }}
{{ 'https://example.com/path?foo=bar&page=2' | scheme }}
Výstup
http
https
Další filtry
Tyto filtry poskytují užitečné obecné funkce.
default
Vrátí výchozí hodnotu pro všechny proměnné bez přiřazené hodnoty (tj. null).
Kód
{{ snippets[Header] | default: 'My Website' }}
Výstup
<!-- If a snippet with the name Header returns null -->
My Website
file_size
Po použití na číselnou hodnotu představující mnoho bajtů vrátí formátovanou velikost soubor s jednotkou vhodného měřítka.
Volitelně lze předat parametr přesnosti k určení počet desetinných míst ve výsledku. Výchozí nastavení přesnosti je 1.
Kód
{{ 10000000 | file_size }}
{{ 2050 | file_size: 0 }}
{{ entity.notes.first.filesize | file_size: 2 }}
Výstup
9.5 MB
2 KB
207.14 KB
h
Poskytuje HTML reprezentaci atributu. Například zobrazení HTML reprezentace dotazů FetchXML atribut XML.
Kód
{{ samplequery.xml | h }}
Výstup
<fetch mapping="logical" count="5000" page="1" returntotalrecordcount="true"> <entity name="contact"> <attribute name="fullname" /> </entity> </fetch>
has_role
Při použití na user vrací true, pokud uživatel patří do dané role. Vrací false, pokud tomu tak není.
Kód
{% assign is_admin = user | has_role: 'Administrators' %}
{% if is_admin %}
User is an administrator.
{% endif %}
liquid
Vykresluje řetězec jako kód jazyka Liquid. Tento kód má přístup k aktuálnímu kontextu spuštění jazyka Liquid (proměnné atd.).
Poznámka:
Tento filtr by se měl používat opatrně a měl by se obecně použít pouze pro hodnoty, které jsou pod výhradní kontrolou autorů obsahu webu nebo ostatních uživatelů, kterým lze důvěřovat v oblasti psaní kódu jazyka Liquid.
Kód
{{ page.adx_copy | liquid }}