Filtros Liquid disponíveis
Os filtros do Liquid são utilizados para modificar o resultado das cadeias, números, variáveis e objetos. São separados do valor ao qual estão a ser aplicados por uma |.
{{ 'hal 9000' | upcase }} <!-- Output: HAL 9000 -->
Alguns filtros aceitam parâmetros. Os filtros também podem ser combinados e são aplicados da esquerda para a direita.
{{ 2 | times: 2 | minus: 1 }} <!-- Output: 3 -->
{{ "Hello, " | append: user.firstname }} <!-- Output: Hello, Dave -->
A secção abaixo descreve diversos filtros.
Filtros de matriz
Os filtros de matriz são utilizados para trabalhar com matrizes.
batch
Divide uma matriz em várias matrizes de um determinado tamanho.
Código
{% assign batches = entityview.records | batch: 2 %}
{% for batch in batches %}
<ul>
{% for item in batch %}
<li>{{ item.fullname }}</li>
{% endfor %}
</ul>
{% endfor %}
Saída
<ul>
<li>John Smith</li>
<li>Dave Thomas</li>
</ul>
<ul>
<li>Jake Johnson</li>
<li>Jack Robinson</li>
</ul>
concat
Concatena duas matrizes numa única matriz nova.
Dado um único item como parâmetro, concat devolve uma nova matriz composta pela matriz original, com o item fornecido como último elemento.
Código
Group #1: {{ group1 | join: ', ' }}
Group #2: {{ group2 | join: ', ' }}
Group #1 + Group #2: {{ group1 | concat: group2 | join: ', ' }}
Saída
Group #1: John, Pete, Hannah
Group #2: Joan, Bill
Group #1 + Group #2: John, Pete, Hannah, Joan, Bill
except
Selecione todos os objetos numa matriz onde um determinado atributo não tenha um determinado valor. (É o inverso de where.)
Código
{% assign redmond = entityview.records | except: 'address1_city', 'Redmond' %}
{% for item in redmond %}
{{ item.fullname }}
{% endfor %}
Saída
Jack Robinson
Primeiro
Devolve o primeiro elemento de uma matriz.
first também pode ser utilizado com uma notação de ponto especial, nos casos em que tem de ser utilizado dentro de uma etiqueta.
Código
{% assign words = This is a run of text | split: %}
{{ words | first }}
{% if words.first == This %}
The first word is This.
{% endif %}
Saída
This
The first word is This.
group_by
Agrupar os itens numa matriz por um determinado atributo.
Código
{% assign groups = entityview.records | group_by: 'address1_city' %}
{% for group in groups %}
{{ group.key }}:
{% for item in group.items %}
{{ item.fullname }}
{% endfor %}
{% endfor %}
Saída
Redmond:
John Smith
Dave Thomas
Jake Johnson
New York:
Jack Robinson
join
Juntar os elementos de uma matriz com o carater transmitido como o parâmetro. O resultado é uma cadeia única.
Código
{% assign words = This is a run of text | split: %}
{{ words | join: , }}
Saída
This, is, a, run, of, text
Último
Devolve o último elemento de uma matriz.
last também pode ser utilizado com uma notação de ponto especial, nos casos em que tem de ser utilizado dentro de uma etiqueta.
Código
{% assign words = This is a run of text | split: -%}
{{ words | last }}
{% if words.last == text -%}
The last word is text.
{% endif -%}
Saída
text
The last word is text.
ordenar por
Devolve os elementos de uma matriz ordenada por um determinado atributo dos elementos da matriz.
Opcionalmente, pode fornecer desc como um segundo parâmetro para ordenar os elementos por ordem descendente, em vez de ascendente.
Código
{{ entityview.records | order_by: 'fullname' | join: ', ' }}
{{ entityview.records | order_by: 'fullname', 'desc' | join: ', ' }}
Saída
Dave Thomas, Jack Robinson, Jake Johnson, John Smith
John Smith, Jake Johnson, Jack Robinson, Dave Thomas
random
Devolve um único item selecionado aleatoriamente a partir da matriz.
Código
{{ group1 | join: ', ' }}
{{ group1 | random }}
Saída
John, Pete, Hannah
Pete
select
Seleciona o valor de um determinado atributo para cada item numa matriz e devolve estes valores como uma matriz.
Código
{{ entityview.records | select: 'address1_city' | join: ', ' }}
Saída
Redmond, New York
shuffle
Aplicado a uma matriz, devolve uma nova matriz com os mesmos itens, distribuídos de forma aleatória.
Código
{{ group1 | join: ', ' }}
{{ group1 | shuffle | join: ', ' }}
Saída
John, Pete, Hannah
Hannah, John, Pete
size
Devolve o número de itens numa matriz.
size também pode ser utilizado com uma notação de ponto especial, nos casos em que tem de ser utilizado dentro de uma etiqueta.
Código
{% assign words = This is a run of text | split: -%}
{{ words | size }}
{% if words.size == 6 -%}
The text contains 6 words.
{% endif -%}
Saída
6
The text contains 6 words.
skip
Ignora um determinado número de itens numa matriz e devolve o resto.
Código
{% assign words = This is a run of text | split: %}
{{ words | skip: 3 | join: ', ' }}
Saída
run, of, text
take
Retira um determinado número de itens da matriz, devolvendo os itens retirados.
Código
{% assign words = This is a run of text | split: %}
{{ words | take: 3 | join: ', ' }}
Saída
This, is, a
then_by
Adiciona uma ordenação subsequente adicional a uma matriz já ordenada pororder_by.
Opcionalmente, pode fornecer desc como um segundo parâmetro para ordenar os elementos por ordem descendente, em vez de ascendente.
Código
{{ entityview.records | order_by: 'address1_city' | then_by: 'fullname' | join: ', ' }}
{{ entityview.records | order_by: 'address1_city' | then_by: 'fullname', 'desc' | join: ', ' }}
Saída
Dave Thomas, Jack Robinson, Jake Johnson, John Smith
John Smith, Jake Johnson, Jack Robinson, Dave Thomas
em que
Seleciona todos os objetos numa matriz onde um determinado atributo tenha um determinado valor.
Código
{% assign redmond = entityview.records | where: 'address1_city', 'Redmond' %}
{% for item in redmond %}
{{ item.fullname }}
{% endfor %}
Saída
John Smith
Dave Thomas
Jake Johnson
Filtros de data
Os filtros de data podem ser utilizados para a aritmética da data ou para converter valores de DateTime em vários formatos.
data
Formata um valor de DateTime utilizando uma cadeia de formato .NET.
Cadeias de Formato de Data e Hora Padrão
Cadeias de Formato de Data e Hora Personalizadas
Código
{{ now | date: 'g' }}
{{ now | date: 'MMMM dd, yyyy' }}
Saída
5/7/2018 7:20 AM
May 07, 2018
date_add_days
Adiciona o número especificado de dias inteiros ou fracionais ao valor de DateTime. O parâmetro pode ser positivo ou negativo.
Código
{{ now }}
{{ now | date_add_days: 1 }}
{{ now | date_add_days: -2.5 }}
Saída
5/7/2018 7:20:46 AM
5/8/2018 7:20:46 AM
5/4/2018 7:20:46 PM
date_add_hours
Adiciona o número especificado de horas inteiras ou fracionais ao valor de DateTime. O parâmetro pode ser positivo ou negativo.
Código
{{ now }}
{{ now | date_add_hours: 1 }}
{{ now | date_add_hours: -2.5 }}
Saída
5/7/2018 7:20:46 AM
5/7/2018 8:20:46 AM
5/7/2018 4:50:46 AM
date_add_minutes
Adiciona o número especificado de minutos inteiros ou fracionais ao valor de DateTime. O parâmetro pode ser positivo ou negativo.
Código
{{ now }}
{{ now | date_add_minutes: 10 }}
{{ now | date_add_minutes: -2.5 }}
Saída
5/7/2018 7:20:46 AM
5/7/2018 7:30:46 AM
5/7/2018 7:18:16 AM
date_add_months
Adiciona o número especificado de meses inteiros ou fracionais ao valor de DateTime. O parâmetro pode ser positivo ou negativo.
Código
{{ now }}
{{ now | date_add_months: 1 }}
{{ now | date_add_months: -2 }}
Saída
5/7/2018 7:20:46 AM
6/7/2018 7:20:46 AM
3/7/2018 7:20:46 AM
date_add_seconds
Adiciona o número especificado de segundos inteiros ou fracionais ao valor de DateTime. O parâmetro pode ser positivo ou negativo.
Código
{{ now }}
{{ now | date_add_seconds: 10 }}
{{ now | date_add_seconds: -1.25 }}
Saída
5/7/2018 7:20:46 AM
5/7/2018 7:20:56 AM
5/7/2018 7:20:45 AM
date_add_years
Adiciona o número especificado de anos inteiros ou fracionais ao valor de DateTime. O parâmetro pode ser positivo ou negativo.
Código
{{ now }}
{{ now | date_add_years: 1 }}
{{ now | date_add_years: -2 }}
Saída
5/7/2018 7:20:46 AM
5/7/2019 7:20:46 AM
5/7/2016 7:20:46 AM
date_to_iso8601
Formata um valor DateTime de acordo com a norma ISO 8601. Útil ao criar feeds Atom ou o elemento <time> de HTML5.
Código
{{ now | date_to_iso8601 }}
Saída
2018-05-07T07:20:46Z
date_to_rfc822
Formata um valor DateTime de acordo com a norma RFC 822. Útil ao criar feeds RSS.
Código
{{ now | date_to_rfc822 }}
Saída
Mon, 07 May 2018 07:20:46 Z
Filtros escape
As sequências escape oferecem uma forma de incluir caráteres especiais em cadeias sem entrar em conflito com a interpretação regular desses caráteres pela linguagem ou formato de programação.
Os seguintes filtros escape substituem caráteres de cadeia por sequências escape ou removem caráteres de cadeia inválidos baseados no tipo de destino.
escape
Coloca um caráter HTML de escape numa cadeia.
Código
{{ '<p>test</p>' | escape }}
Saída
<p>test</p>
html_safe_escape
Encobre uma determinada cadeia de HTML num fragmento HTML seguro.
Código
{{ '<img src="images/myimage.jpg" onerror="alert(1);">' | html_safe_escape }}
Saída
<img src="images/myimage.jpg">
url_escape
Coloca um carater de escape URI, para inclusão num URL.
Código
{{ 'This & that//' | url_escape }}
Saída
This+%26+that%2F%2F
xml_escape
Coloca um carater de escape XML, para inclusão na saída de XML.
Código
{{ '<p>test</p>' | xml_escape }}
Saída
<p>test</p>
Filtros de lista
Os filtros de Lista são utilizados para trabalhar com determinados valores de atributo entitylist e para ajudar a criar vistas de lista.
current_sort
Dada uma expressão de ordenação, devolve a direção de ordenação atual de determinado atributo.
Código
{{ 'name ASC, createdon DESC' | current_sort: 'createdon' }}
Saída
DESC
metafilters
Analisa um valor JSON entitylist filter_definition nos objetos de grupo da opção de filtro.
metafiltros podem ser fornecidos opcionalmente com uma consulta de filtro de atributo atual e entitylist atual, permitindo sinalizar os objetos de filtro devolvidos como selecionados ou não selecionados.
Código
{% 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
Dada uma direção de ordenação, devolve a direção de ordenação oposta.
Código
<!-- Sort direction is not case-sensitive -->
{{ 'ASC' | reverse_sort }}
{{ 'desc' | reverse_sort }}
Saída
DESC
ASC
Filtros matemáticos
Os filtros matemáticos permitem efetuar operações matemáticas em números.
Tal como sucede com os filtros, os filtros matemáticos podem ser encadeados e são aplicados da esquerda para a direita.
Código
{{ 10 | times: 2 | minus: 5 | divided_by: 3 }}
Saída
5
ceil
Arredonda um valor até ao número inteiro mais próximo.
Código
{{ 4.6 | ceil }}
{{ 4.3 | ceil }}
Saída
5
5
divided_by
Divide um número por outro número.
Código
{{ 10 | divided_by: 2 }}
{{ 10 | divided_by: 3 }}
{{ 10.0 | divided_by: 3 }}
Saída
5
3
3.333333
floor
Arredonda um valor para baixo até ao número inteiro mais próximo.
Código
{{ 4.6 | floor }}
{{ 4.3 | floor }}
Saída
4
4
minus
Subtrai um número de outro número.
Código
<!-- entityview.page = 11 -->
{{ entityview.page | minus: 1 }}
{{ 10 | minus: 1.1 }}
{{ 10.1 | minus: 1 }}
Saída
10
9
9.1
modulo
Divide um número por outro número e devolve o resto.
Código
{{ 12 | modulo: 5 }}
Saída
2
plus
Adiciona um número a outro número.
Código
<!-- entityview.page = 11 -->
{{ entityview.page | plus: 1 }}
{{ 10 | plus: 1.1 }}
{{ 10.1 | plus: 1 }}
Saída
12
11
11.1
round
Arredonda um valor para o número inteiro mais próximo ou o número de casas decimais especificado.
Código
{{ 4.6 | round }}
{{ 4.3 | round }}
{{ 4.5612 | round: 2 }}
Saída
5
4
4.56
times
Multiplica um número por outro número.
Código
{{ 10 | times: 2 }}
{{ 10 | times: 2.2 }}
{{ 10.1 | times: 2 }}
Saída
20
20
20.2
Filtros de cadeia
Os filtros de cadeia manipulam strings..
append
Acrescenta uma cadeia ao final de outra cadeia.
Código
{{ 'filename' | append: '.js' }}
Saída
filename.js
capitalize
capitaliza todas as palavras numa cadeia.
Código
{{ 'capitalize me' | capitalize }}
Saída
Capitalize Me
downcase
Converte uma cadeia em minúsculas.
Código
{{ 'MIxed Case TExt' | downcase }}
Saída
mixed case text
newline_to_br
Insere uma etiqueta HTML de quebra de linha <br /> em cada quebra de linha numa cadeia.
Código
{% capture text %}
A
B
C
{% endcapture %}
{{ text | newline_to_br }}
Saída
A<br />
B<br />
C<br />
prepend
Acrescenta uma cadeia ao início de outra cadeia.
Código
{{ 'Jane Johnson' | prepend: 'Dr. ' }}
Saída
Dr. Jane Johnson
remove
Remover todas as ocorrências de uma subcadeia de uma cadeia.
Código
{{ 'Hello, Dave. How are you, Dave?' | remove: 'Dave' }}
Saída
Hello, . How are you, ?
remove_first
Remove a primeira ocorrência de uma subcadeia de uma cadeia.
Código
{{ 'Hello, Dave. How are you, Dave?' | remove_first: 'Dave' }}
Saída
Hello, . How are you, Dave?
replace
Substitui todas as ocorrências de uma cadeia por uma subcadeia.
Código
{{ 'Hello, Dave. How are you, Dave?' | replace: 'Dave', 'John' }}
Saída
Hello, John. How are you, John?
replace_first
Substitui a primeira ocorrência de uma cadeia por uma subcadeia.
Código
{{ 'Hello, Dave. How are you, Dave?' | replace_first: 'Dave', 'John' }}
Saída
Hello, John. How are you, Dave?
split
O filtro split utiliza uma subcadeia como um parâmetro. A subcadeia é utilizada como delimitadora para dividir uma cadeia numa matriz.
Código
{% 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: ', ' }}
Saída
First word: This
First word: This
Second word: is
Last word: filter
All words: This, is, a, demo, of, the, split, filter
strip_html
Remove todas as tags HTML de uma cadeia.
Código
<p>Hello</p>
Saída
Hello
strip_newlines
Retira todas as quebras de linha de uma cadeia.
Código
{% capture text %}
A
B
C
{% endcapture %}
{{ text | strip_newlines }}
Saída
ABC
text_to_html
Formata uma cadeia de texto simples como simples HTML. O texto é codificado em HTML, os blocos de texto separados por uma linha vazia serão envolvidos em etiquetas <p> de parágrafo, as quebras de linha individuais são substituídas por <br> e os URL são convertidos em hiperligações.
Código
{{ note.notetext | text_to_html }}
Saída
<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
Trunca uma cadeia até um determinado número de carateres. São acrescentadas reticências (...) à cadeia e são incluídas na contagem de carateres.
Código
{{ 'This is a long run of text.' | truncate: 10 }}
Saída
This is...
truncate_words
Trunca uma cadeia até um determinado número de palavras. As reticências (...) são acrescentadas à cadeia truncada.
Código
{{ 'This is a long run of text.' | truncate_words: 3 }}
Saída
This is a...
upcase
Converte uma cadeia em maiúsculas.
Código
{{ 'MIxed Case TExt' | upcase }}
Saída
MIXED CASE TEXT
Filtros de tipo
Os filtros de tipo permite, converter os valores de um tipo noutros tipos.
boolean
Tenta converter um valor de cadeia num Booleano. Se o valor já for Booleano, é devolvido inalterado. Se não for possível converter o valor num Booleano, será devolvido null.
Este filtro também aceitará ativar, ativado ou sim como true e desativar, desativado e não como false.
Código
{{ true | boolean }}
{{ 'false' | boolean }}
{{ 'enabled' | boolean }}
{{ settings['something/enabled'] | boolean | default: false }}
Saída
true
false
true
false
decimal
Tenta converter um valor de cadeia num número decimal. Se o valor já for um número decimal, é devolvido inalterado. Se não for possível converter o valor num número decimal, será devolvido null.
Código
{{ 10.1 | decimal }}
{{ '3.14' | decimal }}
{{ 'text' | decimal | default: 3.14 }}
Saída
10.1
3.14
3.14
integer
Tenta converter um valor de cadeia num número inteiro. Se o valor já for um número inteiro, é devolvido inalterado. Se não for possível converter o valor num número inteiro, será devolvido null.
Código
{{ 10 | integer }}
{{ '10' | integer }}
{{ '10.1' | integer }}
{{ 'text' | integer | default: 2 }}
Saída
10
10
2
string
Tenta converter um valor na respetiva representação em cadeia. Se o valor já for uma cadeia, é devolvido inalterado. Se o valor for null, será devolvido null.
Filtros de URL
Os filtros de URL permitem compilar ou extrair partes de URLs.
add_query
Acrescenta um parâmetro da cadeia de consulta a um URL. Se o parâmetro já existir no URL, o valor do parâmetro é atualizado.
Se este filtro for aplicado a um URL absoluto completo, um URL absoluto atualizado é o resultado. Se for aplicado a um caminho, o resultado é um caminho atualizado.
Código
{{ 'https://example.com/path?page=1' | add_query: 'foo', 'bar' }}
{{ '/path?page=1' | add_query: 'page', 2 }}
Saída
https://example.com/path?page=1&foo=bar
/path?page=2
base
Obtém o URL de base de determinado URL.
Código
{{ 'https://example.com/path?foo=bar&page=2' | base }}
Saída
https://example.com
host
Obtém a parte do anfitrião de um URL.
Código
{{ 'https://example.com/path?foo=bar&page=2' | host }}
Saída
example.com
path
Obtém a parte do caminho de um URL.
Código
{{ 'https://example.com/path?foo=bar&page=2' | path }}
{{ '/path?foo=bar&page=2' | path }}
Saída
/path
/path
path_and_query
Obtém a parte do caminho e da consulta de um URL.
Código
{{ 'https://example.com/path?foo=bar&page=2' | path_and_query }}
{{ '/path?foo=bar&page=2' | path_and_query }}
Saída
/path?foo=bar&page=2
/path?foo=bar&page=2
port
Obtém o número de porta de um URL.
Código
{{ '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 }}
Saída
80
443
9000
remove_query
Remove um parâmetro da cadeia de consulta de um URL. Se o parâmetro não existir no URL, o URL é devolvido inalterado.
Se este filtro for aplicado a um URL absoluto completo, um URL absoluto atualizado é o resultado. Se for aplicado a um caminho, o resultado é um caminho atualizado.
Código
{{ 'https://example.com/path?page=1' | remove_query: 'page' }}
{{ '/path?page=1' | remove_query: 'page' }}
Saída
https://example.com/path
/path
scheme
Obtém a parte do esquema de um URL.
Código
{{ 'https://example.com/path?foo=bar&page=2' | scheme }}
{{ 'https://example.com/path?foo=bar&page=2' | scheme }}
Saída
http
https
Filtros adicionais
Estes filtros fornecem funcionalidades gerais úteis.
default
Devolve um valor predefinido para a variável sem valor atribuído (ou seja, null).
Código
{{ snippets[Header] | default: 'My Website' }}
Saída
<!-- If a snippet with the name Header returns null -->
My Website
file_size
Aplicado a um valor numérico que representa muitos bytes, devolve um tamanho de ficheiro formatado com uma unidade de escala adequada.
Opcionalmente, pode ser transmitido um parâmetro de precisão para controlar o número de casas decimais no resultado. A precisão predefinida é 1.
Código
{{ 10000000 | file_size }}
{{ 2050 | file_size: 0 }}
{{ entity.notes.first.filesize | file_size: 2 }}
Saída
9.5 MB
2 KB
207.14 KB
h
Fornece uma representação HTML de um atributo. Por exemplo, mostrando uma representação HTML do atributo XML da consulta FetchXML.
Código
{{ samplequery.xml | h }}
Saída
<fetch mapping="logical" count="5000" page="1" returntotalrecordcount="true"> <entity name="contact"> <attribute name="fullname" /> </entity> </fetch>
has_role
Aplicado a um utilizador, devolve true se o utilizador pertencer à função fornecida. Caso contrário, devolve false.
Código
{% assign is_admin = user | has_role: 'Administrators' %}
{% if is_admin %}
User is an administrator.
{% endif %}
liquid
Compõe uma cadeia como código Líquido. Este código tem acesso ao contexto de execução da Liquid atual (variáveis, etc.).
Nota
Este filtro deve ser utilizado com precaução e normalmente só deve ser aplicado aos valores sob o controlo exclusivo dos autores do conteúdo do site ou de outros utilizadores que possam ser considerados fidedignos para escrever código da linguagem Liquid.
Código
{{ page.adx_copy | liquid }}