Filtros de Liquid disponibles
Los filtros de Liquid se usan para modificar el resultado de cadenas, números, variables y objetos. Están separados del valor al que se aplican mediante una |.
{{ 'hal 9000' | upcase }} <!-- Output: HAL 9000 -->
Algunos filtros aceptan parámetros. Los filtros también se pueden combinar, y se aplican en orden de izquierda a derecha.
{{ 2 | times: 2 | minus: 1 }} <!-- Output: 3 -->
{{ "Hello, " | append: user.firstname }} <!-- Output: Hello, Dave -->
La sección a continuación describe los diferentes filtros.
Filtros de matriz
Los filtros de matriz se usan para trabajar con matrices.
batch
Divide una matriz en matrices múltiples de un determinado tamaño.
Código
{% assign batches = entityview.records | batch: 2 %}
{% for batch in batches %}
<ul>
{% for item in batch %}
<li>{{ item.fullname }}</li>
{% endfor %}
</ul>
{% endfor %}
Salida
<ul>
<li>John Smith</li>
<li>Dave Thomas</li>
</ul>
<ul>
<li>Jake Johnson</li>
<li>Jack Robinson</li>
</ul>
concat
Concatena dos matrices en un matriz nueva y única.
Dado un solo elemento como parámetro, concat devuelve una nueva matriz que consiste en la matriz original, con el elemento dado como último elemento.
Código
Group #1: {{ group1 | join: ', ' }}
Group #2: {{ group2 | join: ', ' }}
Group #1 + Group #2: {{ group1 | concat: group2 | join: ', ' }}
Salida
Group #1: John, Pete, Hannah
Group #2: Joan, Bill
Group #1 + Group #2: John, Pete, Hannah, Joan, Bill
except
Seleccione todos los objetos de una matriz en la que un atributo determinado no tiene un valor determinado. (Es lo contrario de where).
Código
{% assign redmond = entityview.records | except: 'address1_city', 'Redmond' %}
{% for item in redmond %}
{{ item.fullname }}
{% endfor %}
Output
Jack Robinson
primero
Devuelve el primer elemento de una matriz.
first también se puede usar con la notación de punto especial, en casos en los que sea necesario usarla dentro de una etiqueta.
Código
{% assign words = This is a run of text | split: %}
{{ words | first }}
{% if words.first == This %}
The first word is This.
{% endif %}
Salida
This
The first word is This.
group_by
Agrupa los elementos en una matriz por un atributo determinado.
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 %}
Salida
Redmond:
John Smith
Dave Thomas
Jake Johnson
New York:
Jack Robinson
join
Combina los elementos de una matriz con el carácter pasado como parámetro. El resultado es una sola cadena.
Código
{% assign words = This is a run of text | split: %}
{{ words | join: , }}
Salida
This, is, a, run, of, text
Último
Devuelve el último elemento de una matriz.
last también se puede usar con la notación de punto especial, en casos en los que sea necesario usarla dentro de una etiqueta.
Code
{% assign words = This is a run of text | split: -%}
{{ words | last }}
{% if words.last == text -%}
The last word is text.
{% endif -%}
Output
text
The last word is text.
order_by
Devuelve los elementos de una matriz ordenada por atributo dado de los elementos de la matriz.
De manera opcional, puede proporcionar desc como segundo parámetro para ordenar los elementos en orden descendente, en lugar de ascendente.
Código
{{ entityview.records | order_by: 'fullname' | join: ', ' }}
{{ entityview.records | order_by: 'fullname', 'desc' | join: ', ' }}
Output
Dave Thomas, Jack Robinson, Jake Johnson, John Smith
John Smith, Jake Johnson, Jack Robinson, Dave Thomas
random
Devuelve un solo elemento seleccionado aleatoriamente de la matriz.
Código
{{ group1 | join: ', ' }}
{{ group1 | random }}
Output
John, Pete, Hannah
Pete
seleccionar
Selecciona el valor de un atributo determinado para cada elemento de una matriz, y devuelve estos valores como matriz.
Código
{{ entityview.records | select: 'address1_city' | join: ', ' }}
Salida
Redmond, New York
shuffle
Aplicado a una matriz, devuelve una nueva matriz con los mismos elementos, en orden aleatorizado.
Código
{{ group1 | join: ', ' }}
{{ group1 | shuffle | join: ', ' }}
Output
John, Pete, Hannah
Hannah, John, Pete
size
Devuelve el número de elementos de una matriz.
size también se puede usar con la notación de punto especial, en casos en los que sea necesario usarla dentro de una etiqueta.
Código
{% assign words = This is a run of text | split: -%}
{{ words | size }}
{% if words.size == 6 -%}
The text contains 6 words.
{% endif -%}
Salida
6
The text contains 6 words.
skip
Omite un número determinado de elementos de una matriz, y devuelve el resto.
Código
{% assign words = This is a run of text | split: %}
{{ words | skip: 3 | join: ', ' }}
Salida
run, of, text
take
Toma un número determinado de elementos de la matriz, devolviendo los elementos tomados.
Código
{% assign words = This is a run of text | split: %}
{{ words | take: 3 | join: ', ' }}
Output
This, is, a
then_by
Agrega orden posterior extra a una matriz ya ordenada medianteorderby.
De manera opcional, puede proporcionar desc como segundo parámetro para ordenar los elementos en orden descendente, en lugar 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: ', ' }}
Salida
Dave Thomas, Jack Robinson, Jake Johnson, John Smith
John Smith, Jake Johnson, Jack Robinson, Dave Thomas
donde
Seleccione todos los objetos de una matriz en la que un atributo determinado tiene un valor determinado.
Código
{% assign redmond = entityview.records | where: 'address1_city', 'Redmond' %}
{% for item in redmond %}
{{ item.fullname }}
{% endfor %}
Salida
John Smith
Dave Thomas
Jake Johnson
Filtros por fecha
Los filtros por fecha se pueden usar para la aritmética de fecha o para convertir valores de fecha y hora en distintos formatos.
fecha
Aplica formato a un valor de fecha y hora con una cadena de formato .NET.
Cadenas de formato estándar de fecha y hora
Cadenas de formato personalizado de fecha y hora
Code
{{ now | date: 'g' }}
{{ now | date: 'MMMM dd, yyyy' }}
Output
5/7/2018 7:20 AM
May 07, 2018
date_add_days
Agrega un número especificado de días enteros y fraccionarios al valor de fecha y hora. El parámetro pueden ser positivo o negativo.
Code
{{ now }}
{{ now | date_add_days: 1 }}
{{ now | date_add_days: -2.5 }}
Output
5/7/2018 7:20:46 AM
5/8/2018 7:20:46 AM
5/4/2018 7:20:46 PM
date_add_hours
Agrega un número especificado de horas enteras y fraccionarias al valor de fecha y hora. El parámetro pueden ser positivo o negativo.
Code
{{ now }}
{{ now | date_add_hours: 1 }}
{{ now | date_add_hours: -2.5 }}
Output
5/7/2018 7:20:46 AM
5/7/2018 8:20:46 AM
5/7/2018 4:50:46 AM
date_add_minutes
Agrega un número especificado de minutos enteros y fraccionarios al valor de fecha y hora. El parámetro pueden ser positivo o negativo.
Code
{{ now }}
{{ now | date_add_minutes: 10 }}
{{ now | date_add_minutes: -2.5 }}
Output
5/7/2018 7:20:46 AM
5/7/2018 7:30:46 AM
5/7/2018 7:18:16 AM
date_add_months
Agrega un número especificado de meses enteros al valor de fecha y hora. El parámetro pueden ser positivo o negativo.
Code
{{ now }}
{{ now | date_add_months: 1 }}
{{ now | date_add_months: -2 }}
Output
5/7/2018 7:20:46 AM
6/7/2018 7:20:46 AM
3/7/2018 7:20:46 AM
date_add_seconds
Agrega un número especificado de segundos enteros y fraccionarios al valor de fecha y hora. El parámetro pueden ser positivo o negativo.
Code
{{ now }}
{{ now | date_add_seconds: 10 }}
{{ now | date_add_seconds: -1.25 }}
Output
5/7/2018 7:20:46 AM
5/7/2018 7:20:56 AM
5/7/2018 7:20:45 AM
date_add_years
Agrega un número especificado de años enteros al valor de fecha y hora. El parámetro pueden ser positivo o negativo.
Code
{{ now }}
{{ now | date_add_years: 1 }}
{{ now | date_add_years: -2 }}
Output
5/7/2018 7:20:46 AM
5/7/2019 7:20:46 AM
5/7/2016 7:20:46 AM
date_to_iso8601
Aplica formato a un valor de fecha y hora de acuerdo con la norma ISO 8601. Útil para crear fuentes Atom o el elemento HTML5 <>.
Code
{{ now | date_to_iso8601 }}
Output
2018-05-07T07:20:46Z
date_to_rfc822
Aplica formato a un valor de fecha y hora de acuerdo con la norma RFC 822. Útil para crear fuentes RSS.
Código
{{ now | date_to_rfc822 }}
Output
Mon, 07 May 2018 07:20:46 Z
Filtros de escape
Las secuencias de escape proporcionan una forma de incluir caracteres especiales en cadenas sin entrar en conflicto con la interpretación normal de esos caracteres por parte del lenguaje de programación o el formato.
Los siguientes filtros de escape reemplazan los caracteres de cadena con secuencias de escape o eliminan los caracteres de cadena no válidos según el tipo de destino.
escape
Inserta caracteres de escape HTML en una cadena.
Código
{{ '<p>test</p>' | escape }}
Output
<p>test</p>
html_safe_escape
Convierte una cadena HTML dada en un fragmento HTML seguro.
Código
{{ '<img src="images/myimage.jpg" onerror="alert(1);">' | html_safe_escape }}
Output
<img src="images/myimage.jpg">
url_escape
Se insertan caracteres de escape URI en una cadena para su inclusión en una dirección URL.
Code
{{ 'This & that//' | url_escape }}
Output
This+%26+that%2F%2F
xml_escape
Se insertan caracteres de escape XML en una cadena para su inclusión en salida XML.
Código
{{ '<p>test</p>' | xml_escape }}
Output
<p>test</p>
Filtros de lista
Los filtros de lista se usan para trabajar con determinados valores de atributo entitylist y para ayudar a crear vistas de lista.
current_sort
Dada una expresión de ordenación, devuelve la dirección de ordenación actual para un atributo determinado.
Code
{{ 'name ASC, createdon DESC' | current_sort: 'createdon' }}
Output
DESC
metafilters
Analiza un valor JSON de entitylist filter_definition en objetos de grupo de opciones de filtro.
metafilters se puede ofrecer opcionalmente con una consulta de filtro de atributos actual y una entitylist actual, lo que permite que los objetos de filtro devueltos se marquen como seleccionados o no seleccionados.
Code
{% 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 una dirección de ordenación, devuelve la dirección de ordenación opuesta.
Código
<!-- Sort direction is not case-sensitive -->
{{ 'ASC' | reverse_sort }}
{{ 'desc' | reverse_sort }}
Salida
DESC
ASC
Filtros de matemáticas
Los filtros de matemáticas permiten realizar operaciones matemáticas en números.
Como con todos los filtros, los filtros de matemáticas también se pueden encadenar y se aplican en orden de izquierda a derecha.
Código
{{ 10 | times: 2 | minus: 5 | divided_by: 3 }}
Salida
5
ceil
Redondea al alza un valor hasta el entero más cercano.
Code
{{ 4.6 | ceil }}
{{ 4.3 | ceil }}
Output
5
5
divided_by
Divide un número por otro número.
Code
{{ 10 | divided_by: 2 }}
{{ 10 | divided_by: 3 }}
{{ 10.0 | divided_by: 3 }}
Output
5
3
3.333333
floor
Redondea a la baja un valor hasta el entero más cercano.
Código
{{ 4.6 | floor }}
{{ 4.3 | floor }}
Salida
4
4
minus
Resta un número de otro número.
Código
<!-- entityview.page = 11 -->
{{ entityview.page | minus: 1 }}
{{ 10 | minus: 1.1 }}
{{ 10.1 | minus: 1 }}
Salida
10
9
9.1
modulo
Divide un número por otro número y devuelve el resto.
Código
{{ 12 | modulo: 5 }}
Salida
2
plus
Suma un número a otro número.
Código
<!-- entityview.page = 11 -->
{{ entityview.page | plus: 1 }}
{{ 10 | plus: 1.1 }}
{{ 10.1 | plus: 1 }}
Salida
12
11
11.1
round
Redondea un valor al entero más próximo o el número especificado de decimales.
Código
{{ 4.6 | round }}
{{ 4.3 | round }}
{{ 4.5612 | round: 2 }}
Salida
5
4
4.56
times
Multiplica un número por otro número.
Código
{{ 10 | times: 2 }}
{{ 10 | times: 2.2 }}
{{ 10.1 | times: 2 }}
Salida
20
20
20.2
Filtros de cadena
Los filtros de cadena manipulan cadenas.
append
Anexa una cadena al final de otra cadena.
Código
{{ 'filename' | append: '.js' }}
Output
filename.js
capitalize
pone en mayúscula cada palabra en una cadena.
Código
{{ 'capitalize me' | capitalize }}
Output
Capitalize Me
downcase
Convierte una cadena en minúscula.
Código
{{ 'MIxed Case TExt' | downcase }}
Output
mixed case text
newline_to_br
Inserta una etiqueta HTML de salto de línea <br /> en cada salto de línea de una cadena.
Código
{% capture text %}
A
B
C
{% endcapture %}
{{ text | newline_to_br }}
Salida
A<br />
B<br />
C<br />
prepend
Antepone una cadena al principio de otra cadena.
Código
{{ 'Jane Johnson' | prepend: 'Dr. ' }}
Salida
Dr. Jane Johnson
remove
Elimina todas las instancias de una subcadena de una cadena.
Code
{{ 'Hello, Dave. How are you, Dave?' | remove: 'Dave' }}
Output
Hello, . How are you, ?
remove_first
Elimina la primera instancia de una subcadena de una cadena.
Código
{{ 'Hello, Dave. How are you, Dave?' | remove_first: 'Dave' }}
Salida
Hello, . How are you, Dave?
replace
Reemplaza todas las instancias de una cadena con una subcadena.
Code
{{ 'Hello, Dave. How are you, Dave?' | replace: 'Dave', 'John' }}
Output
Hello, John. How are you, John?
replace_first
Reemplaza la primera instancia de una cadena con una subcadena.
Código
{{ 'Hello, Dave. How are you, Dave?' | replace_first: 'Dave', 'John' }}
Salida
Hello, John. How are you, Dave?
split
El filtro split adopta una subcadena como parámetro. La subcadena se usa como delimitador para dividir una cadena en una matriz.
Code
{% 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: ', ' }}
Output
First word: This
First word: This
Second word: is
Last word: filter
All words: This, is, a, demo, of, the, split, filter
strip_html
Quita todas las etiquetas HTML de una cadena.
Code
<p>Hello</p>
Output
Hello
strip_newlines
Quita las saltos de línea de una cadena.
Code
{% capture text %}
A
B
C
{% endcapture %}
{{ text | strip_newlines }}
Output
ABC
text_to_html
Da formato a una cadena de texto sin formato como HTML simple. El texto se codifica como HTML, bloques de texto separados por una línea en blanco se incluirán entre etiquetas de párrafo <p>, los saltos de línea individuales se sustituyen con <br>, y las direcciones URL se convierten en hipervínculos.
Código
{{ note.notetext | text_to_html }}
Output
<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 una cadena hasta un número de caracteres determinado. Un punto suspensivo (...) se anexa a la cadena y se incluye en el número de caracteres.
Code
{{ 'This is a long run of text.' | truncate: 10 }}
Output
This is...
truncate_words
Trunca una cadena hasta un número de palabras determinado. Se anexan puntos suspensivos (...) a la cadena truncada.
Código
{{ 'This is a long run of text.' | truncate_words: 3 }}
Output
This is a...
upcase
Convierte una cadena en mayúscula.
Código
{{ 'MIxed Case TExt' | upcase }}
Output
MIXED CASE TEXT
Filtros de tipo
Los filtros de tipo permiten la conversión de valores de un tipo a otro.
boolean
Intenta convertir un valor de cadena en booleano. Si el valor ya es booleano, se devuelve sin cambios. Si el valor no se puede convertir en booleano, se devolverá null.
Este filtro también acepta on, habilitado, o sí como true, y off, deshabilitado y no como false.
Código
{{ true | boolean }}
{{ 'false' | boolean }}
{{ 'enabled' | boolean }}
{{ settings['something/enabled'] | boolean | default: false }}
Salida
true
false
true
false
decimal
Intenta convertir un valor de cadena en número decimal. Si el valor ya es un número decimal, se devuelve sin cambios. Si el valor no se puede convertir en un número decimal, se devolverá null.
Código
{{ 10.1 | decimal }}
{{ '3.14' | decimal }}
{{ 'text' | decimal | default: 3.14 }}
Salida
10.1
3.14
3.14
integer
Intenta convertir un valor de cadena en un entero. Si el valor ya es un entero, se devuelve sin cambios. Si el valor no se puede convertir en un entero, se devolverá null.
Código
{{ 10 | integer }}
{{ '10' | integer }}
{{ '10.1' | integer }}
{{ 'text' | integer | default: 2 }}
Output
10
10
2
string
Intenta convertir un valor en su representación de cadena. Si el valor ya es una cadena, se devuelve sin cambios. Si el valor es null, se devolverá null.
Filtros de dirección URL
Los filtros de dirección URL permiten crear o extraer partes de direcciones URL.
add_query
Anexar un parámetro de cadena de consulta a una dirección URL. Si el parámetro ya existe en la dirección URL, el valor del parámetro se actualiza.
Si este filtro se aplica a una dirección URL absoluta completa, una dirección URL absoluta actualizada es el resultado. Si se aplica a una ruta, una ruta actualizada es el resultado.
Código
{{ 'https://example.com/path?page=1' | add_query: 'foo', 'bar' }}
{{ '/path?page=1' | add_query: 'page', 2 }}
Output
https://example.com/path?page=1&foo=bar
/path?page=2
base
Obtiene la dirección URL de una dirección URL determinada.
Código
{{ 'https://example.com/path?foo=bar&page=2' | base }}
Salida
https://example.com
host
Obtiene la parte de host de una dirección URL.
Code
{{ 'https://example.com/path?foo=bar&page=2' | host }}
Output
example.com
path
Obtiene la parte de ruta de una dirección URL.
Code
{{ 'https://example.com/path?foo=bar&page=2' | path }}
{{ '/path?foo=bar&page=2' | path }}
Output
/path
/path
path_and_query
Obtiene la parte de ruta y consulta de una dirección URL.
Code
{{ 'https://example.com/path?foo=bar&page=2' | path_and_query }}
{{ '/path?foo=bar&page=2' | path_and_query }}
Output
/path?foo=bar&page=2
/path?foo=bar&page=2
port
Obtiene el número de puerto una dirección URL.
Code
{{ '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 }}
Output
80
443
9000
remove_query
Quita un parámetro de cadena de consulta de una dirección URL. Si el parámetro no existe en la dirección URL, la dirección URL se devuelve sin cambios.
Si este filtro se aplica a una dirección URL absoluta completa, una dirección URL absoluta actualizada es el resultado. Si se aplica a una ruta, una ruta actualizada es el resultado.
Código
{{ 'https://example.com/path?page=1' | remove_query: 'page' }}
{{ '/path?page=1' | remove_query: 'page' }}
Output
https://example.com/path
/path
scheme
Obtiene la parte de esquema de una dirección URL.
Código
{{ 'https://example.com/path?foo=bar&page=2' | scheme }}
{{ 'https://example.com/path?foo=bar&page=2' | scheme }}
Salida
http
https
Filtros adicionales
Estos filtros proporcionan funcionalidad general útil.
default
Devuelve un valor predeterminado para cualquier variable sin valor asignado (es decir, null).
Código
{{ snippets[Header] | default: 'My Website' }}
Output
<!-- If a snippet with the name Header returns null -->
My Website
file_size
Aplicado un valor de número que representa muchos bytes, devuelve un tamaño de archivo con formato con una unidad de escala adecuada.
Opcionalmente, puede pasarse un parámetro de precisión para controlar el número de decimales en el resultado. La precisión predeterminada es 1.
Código
{{ 10000000 | file_size }}
{{ 2050 | file_size: 0 }}
{{ entity.notes.first.filesize | file_size: 2 }}
Output
9.5 MB
2 KB
207.14 KB
h
Proporciona una representación HTML de un atributo. Por ejemplo, mostrar una representación HTML del atributo XML de la consulta de FetchXML.
Código
{{ samplequery.xml | h }}
Output
<fetch mapping="logical" count="5000" page="1" returntotalrecordcount="true"> <entity name="contact"> <attribute name="fullname" /> </entity> </fetch>
has_role
Si se aplica a un usuario, devuelve true si el usuario pertenece al rol determinado. Devuelve false si no.
Código
{% assign is_admin = user | has_role: 'Administrators' %}
{% if is_admin %}
User is an administrator.
{% endif %}
liquid
Representa una cadena como código de Liquid. Este código tiene acceso al contexto de ejecución de Liquid actual (variables, etc.).
Nota
Este filtro se debe usar con precaución y debe aplicarse normalmente sólo a los valores que están bajo el control exclusivo de los autores del contenido del sitio, u otros usuarios en los que se puede confiar para escribir código de Liquid.
Code
{{ page.adx_copy | liquid }}