Sdílet prostřednictvím


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

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

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

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

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

Viz také