> ## Documentation Index
> Fetch the complete documentation index at: https://developers.hubspot.es/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Filtros de HubL

> Lista de filtros de HubL y ejemplos para desarrolladores en el CMS de HubSpot.

Los filtros modifican la información de salida de tu HubL y pueden aplicarse a diversas instrucciones y expresiones para ajustar el marcador de plantilla que emite el servidor.

La sintaxis básica de un filtro es `|filtername` y se agrega directamente después de la instrucción o de la expresión, dentro de sus delimitadores. Algunos filtros tienen parámetros adicionales que se pueden agregar entre paréntesis. La sintaxis básica de un filtro con un parámetro de cadena, un número y un booleano es: `|filtername("stringParameter", 10, true)`. Recuerda que los parámetros de cadena deben ir entre comillas. También, hay que tener en cuenta que los filtros de HubL pueden tener un alias que sirve para el mismo propósito que el filtro principal.

Este artículo incluye todos los filtros compatibles de HubL.

<Warning>
  ### Nota:

  Puedes aplicar filtros de HubL a los [tokens de personalización](https://knowledge.hubspot.com/marketing-email/use-personalization-tokens), como tokens de contacto y de empresa, en las páginas del CMS de HubSpot y blogs, pero <u>no</u> en los correos electrónicos.
</Warning>

## abs

Obtiene el valor absoluto de un número. Puedes usar este filtro para garantizar que un número sea positivo.

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set my_number = -53 %}
  {{ my_number|abs }}
  ```

  ```text resultados renderizados.txt theme={null}
  53
  ```
</CodeGroup>

## add

Agrega un valor numérico a otro. Este filtro funciona igual que el [operador +](/cms/reference/hubl/operators-and-expression-tests#math). El parámetro entre paréntesis es el sumando que se combina con el valor numérico inicial.

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set my_num = 40 %}
  {{ my_num|add(13) }}
  ```

  ```text resultados renderizados.txt theme={null}
  53
  ```
</CodeGroup>

## attr

Renderiza el atributo de un diccionario. Este filtro equivale a imprimir una variable existente dentro de un diccionario, como `content.absolute_url`.

<CodeGroup>
  ```text hubl.txt theme={null}
  {{ content|attr("absolute_url") }}
  ```

  ```text resultados renderizados.txt theme={null}
  https://developers.hubspot.com/docs/cms/hubl/filters
  ```
</CodeGroup>

| Parámetro        | Descripción                       |
| ---------------- | --------------------------------- |
| `attribute_name` | Especifica el atributo a imprimir |

## batch

Agrupa los elementos dentro de una secuencia.

En el siguiente ejemplo, hay una variable que contiene una secuencia de tipos de frutas. El filtro `batch` se aplica a un bucle que itera a través de la secuencia. El bucle anidado se ejecuta tres veces para imprimir 3 tipos de fruta por fila, antes de que el bucle exterior se ejecute de nuevo. Observa en el resultado final que, como solo hay cinco tipos de fruta, el último elemento se sustituye por un `&nbsp;` (el segundo parámetro).

<CodeGroup>
  ```html example.html theme={null}
  {% set rows = ["apples", "oranges", "pears", "grapes", "blueberries"] %}

  <table>
  {% for row in rows|batch(3, " ") %}
  <tr>
  {% for column in row %}
  <td>{{ column }}</td>
  {% endfor %}
  </tr>
  {% endfor %}
  </table>
  ```

  ```html example.html theme={null}
  <table>
  <tbody>
  <tr>
  <td>apples</td>
  <td>oranges</td>
  <td>pears</td>
  </tr>
  <tr>
  <td>grapes</td>
  <td>blueberries</td>
  <td>&nbsp;</td>
  </tr>
  </tbody>
  </table>
  ```
</CodeGroup>

| Parámetro   | Tipo     | Descripción                                                                |
| ----------- | -------- | -------------------------------------------------------------------------- |
| `linecount` | Numérico | El número de elementos a incluir en el lote.                               |
| `fill_with` | Cadena   | Especifica lo que hay que incluir para completar los elementos que faltan. |

## between\_times

Calcula el tiempo entre dos objetos de tipo fecha y hora en una unidad de tiempo específica.

<Warning>
  ### Nota:

  Este filtro debe usarse <u>únicamente</u> con variables que devuelvan una fecha. A partir del 30 de septiembre de 2024, este filtro ya no devolverá la fecha actual cuando se pase un valor nulo. Después de esa fecha, un valor nulo en el filtro devolverá el 30 de septiembre de 2024.
</Warning>

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set begin = "2018-07-14T14:31:30+0530"|strtotime("yyyy-MM-dd'T'HH:mm:ssZ") %}
  {% set end = "2018-07-20T14:31:30+0530"|strtotime("yyyy-MM-dd'T'HH:mm:ssZ") %}
  {{ begin|between_times(end, "days") }}
  ```

  ```text resultados renderizados.txt theme={null}
  6
  ```
</CodeGroup>

| Parámetro  | Tipo                | Descripción                                                                                                                                                                                                 |
| ---------- | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `end`      | objeto fecha y hora | El objeto fecha y hora final.                                                                                                                                                                               |
| `timeunit` | Cadena              | Las unidades de tiempo válidas son `nanos` , `micros` , `millis` , `seconds` , `minutes` , `hours` , `half_days` , `days` , `weeks` , `months` , `years` , `decades` , `centuries` , `millennia` y `eras` . |

## bool

Convierte un valor de cadena de texto en un booleano.

<CodeGroup>
  ```text hubl.txt theme={null}
  {% if "true"|bool == true %}hello world{% endif %}
  ```

  ```text resultados renderizados.txt theme={null}
  hello world
  ```
</CodeGroup>

## capitalize

Escribe en mayúsculas la primera letra de un valor variable. El primer carácter estará en mayúscula, mientras que las demás letras estarán en minúscula. Las siguientes palabras, ya sea separadas por espacios o guiones, no tendrán la primera letra en mayúscula.

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set sentence = "the first letter of a sentence should always be capitalized." %}
  {{ sentence|capitalize }}
  ```

  ```text resultados renderizados.txt theme={null}
  The first letter of a sentence should always be capitalized.
  ```
</CodeGroup>

## center

Centra el texto dentro de una longitud de campo determinada utilizando espacios en blanco. Este filtro no es especialmente útil ni recomendable, ya que el compilador HTML de HubSpot elimina los espacios en blanco de forma automática. No obstante, se incluye aquí para brindar una descripción completa.

El siguiente ejemplo muestra este filtro aplicado a una variable dentro de una etiqueta pre-Tag, de modo que los espacios en blanco no se eliminan.

<CodeGroup>
  ```html example.html theme={null}
  <pre>
  {% set var = "string to center" %}
  before{{ var|center(80) }}after
  </pre>
  ```

  ```html example.html theme={null}
  <pre>
  before                                string to center                                after
  </pre>
  ```
</CodeGroup>

| Parámetro | Tipo     | Descripción                                                         |
| --------- | -------- | ------------------------------------------------------------------- |
| `width`   | Numérico | Especifica la longitud del espacio en blanco para centrar el texto. |

## convert\_rgb

Convierte un valor HEX en una cadena RGB. Este filtro es útil si necesitas convertir las variables de color a RGB para utilizarlas con una declaración CSS RGBA. En el siguiente ejemplo, el valor establecido por un módulo de color se convierte en un valor RGB y se utiliza en una declaración CSS RGBA.

<CodeGroup>
  ```html example.html theme={null}
  {% set my_color = "#FFFFFF" %}
  {{ my_color|convert_rgb }}
  {% set my_color2="#000000" %}
  <div style="background: rgba({{ my_color2|convert_rgb }}, .5)"></div>
  ```

  ```html example.html theme={null}
  255, 255, 255

  <div style="background: rgba(0, 0, 0, .5)"></div>
  ```
</CodeGroup>

## cut

Elimina una cadena de un valor. Este filtro se puede utilizar para hacer coincidir y cortar una parte de una cadena. El parámetro especifica la parte de la cadena que debe ser eliminada. En el ejemplo a continuación, se elimina el espacio y la palabra "world" del valor original de la variable.

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set my_string = "Hello world." %}
  {{ my_string|cut(" world") }}
  ```

  ```text resultados renderizados.txt theme={null}
  Hello.
  ```
</CodeGroup>

| Parámetro           | Tipo   | Descripción                                   |
| ------------------- | ------ | --------------------------------------------- |
| `characters_to_cut` | Cadena | La parte de la cadena que debe ser eliminada. |

## datetimeformat (obsoleto)

<Warning>
  **Nota**: este filtro está [obsoleto](/cms/versions-deprecations/deprecated/hubl/filters-functions#datetimeformat-function). En su lugar, usa el filtro [format\_datetime](#format_datetime), que tiene una sintaxis más estandarizada.
</Warning>

## default

Si el valor no está definido, se devolverá el primer parámetro; de lo contrario, se mostrará el valor de la variable. Si quieres usar "default" con variables que se evalúan como falsas, tienes que poner el segundo parámetro como `true`.

El primer ejemplo de abajo mostrará el mensaje si la variable no está definida. El segundo ejemplo utilizó el filtro en una cadena vacía, que no está definida, pero muestra un mensaje debido al segundo parámetro.

<CodeGroup>
  ```text hubl.txt theme={null}
  {{ my_variable|default("my_variable is not defined") }}
  {{ ""|default("the string was empty", true) }}
  ```

  ```text resultados renderizados.txt theme={null}
  my_variable is not defined the string was empty
  ```
</CodeGroup>

| Parámetro       | Tipo     | Descripción                                                                                                                    |
| --------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `default_value` | Cadena   | El valor que se devolverá si la variable no está definida. Si la variable está definida, se devolverá el valor de la variable. |
| `truthy`        | Booleano | con el valor `true` para usar con variables que se evalúan como `false`.                                                       |

## dictsort

Ordena un diccionario y produce pares de clave y valor. Los diccionarios no tienen un orden predeterminado, pero puedes organizarlos por clave o por valor. El primer parámetro es un valor booleano para determinar si la regla de ordenamiento distingue entre mayúsculas y minúsculas. El segundo parámetro determina si ordenar el diccionario por clave o por valor. El siguiente ejemplo muestra un diccionario de contactos ordenado, incluyendo todos los detalles del contacto.

<CodeGroup>
  ```text hubl.txt theme={null}
  {% for item in contact|dictsort(false, "value") %}
  {{item}}
  {% endfor %}
  ```

  ```text resultados renderizados.txt theme={null}
  A sorted contact dictionary
  ```
</CodeGroup>

| Parámetro        | Tipo                 | Descripción                                                                     |
| ---------------- | -------------------- | ------------------------------------------------------------------------------- |
| `case_sensitive` | Booleano             | Determina si las reglas de ordenación distinguen entre mayúsculas y minúsculas. |
| `sort_by`        | `"key"` \| `"value"` | Determina si ordenar por `key` o `value`.                                       |

## difference

Este filtro devuelve las diferencias entre dos conjuntos o listas. La lista que el filtro devuelve contiene todos los elementos únicos que están en la primera lista pero no en la segunda.

<CodeGroup>
  ```text hubl.txt theme={null}
  {{ [1, 2, 3]|difference([2, 3, 4, 5]) }}
  ```

  ```text resultados renderizados.txt theme={null}
  [1]
  ```
</CodeGroup>

| Parámetro | Tipo   | Descripción                                                                                                      |
| --------- | ------ | ---------------------------------------------------------------------------------------------------------------- |
| `list`    | Matriz | La segunda lista con la que se pueden comparar los valores para encontrar las diferencias con la lista original. |

## divide

Divide el valor actual por un divisor. El parámetro que se pasa es el divisor. Este filtro es una alternativa al operador /.

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set numerator = 106 %}
  {{ numerator|divide(2) }}
  ```

  ```text resultados renderizados.txt theme={null}
  53
  ```
</CodeGroup>

| Parámetro | Tipo     | Descripción                                       |
| --------- | -------- | ------------------------------------------------- |
| `divisor` | Numérico | El número por el que hay que dividir la variable. |

## divisible

Es una alternativa a la prueba de la expresión `divisibleby`. El filtro divisible se devolverá como 'true' si el valor es divisible por el número especificado.

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set num = 10 %}
  {% if num|divisible(2) %}
  The number is divisible by 2
  {% endif %}
  ```

  ```text resultados renderizados.txt theme={null}
  The number is divisible by 2
  ```
</CodeGroup>

| Parámetro | Tipo     | Descripción                                                               |
| --------- | -------- | ------------------------------------------------------------------------- |
| `divisor` | Numérico | El número que se va a utilizar cuando se evalúa si el valor es divisible. |

## escape\_html

Sustituye el contenido de una entrada HTML. Acepta una cadena y convierte los caracteres `&`, `<`, `>`, `‘`, `”` y `escape_jinjava` en secuencias seguras para HTML. Usa este filtro para las variables de HubL que se emplean en HTML pero no deben admitir código HTML.

<CodeGroup>
  ```html example.html theme={null}
  {% set escape_string = "<div>This markup is printed as text</div>" %}
  {{ escape_string|escape_html }}
  ```

  ```html example.html theme={null}
  <div>This markup is printed as text</div>
  ```
</CodeGroup>

## escape\_attr

Sustituye el contenido de una entrada de atributo HTML. Acepta una cadena y convierte los caracteres `&`, `<`, `‘`, `”` y `escape_jinjava` en secuencias seguras para HTML. Utiliza este filtro para las variables HubL que se agregan a los atributos HTML.

Ten en cuenta que cuando sustituyas valores de atributos que acepten URLs, como `href`, deberías usar el filtro `escape_url`.

<CodeGroup>
  ```html example.html theme={null}
  {% set escape_string = "This <br> markup is printed as text" %}
  <img src="test.com/imageurl" alt="{{escape_string|escape_attr}}">
  ```

  ```html example.html theme={null}
  <img src="test.com/imageurl" alt="This <br> markup is printed as text" />
  ```
</CodeGroup>

## escape\_jinjava

Convierte los caracteres `{` y `}` en cadenas a secuencias seguras para Jinjava. Utiliza este filtro si necesitas mostrar un texto que pueda contener dichos caracteres en Jinjava.

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set escape_string = "{{This markup is printed as text}}" %}
  {{ escape_string|escape_jinjava }}
  ```

  ```text resultados renderizados.txt theme={null}
  {{This markup is printed as text}}
  ```
</CodeGroup>

## escape\_js

Sustituye cadenas, incluyendo `escape_jinjava`, para que puedan ser insertadas con seguridad en una declaración de variable en JavaScript. Utiliza este filtro para las variables HubL que se usan dentro de los elementos del script HTML.

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set escape_string = "\tThey said 'This string can safely be inserted into JavaScript.'" %}
  {{ escape_string|escape_js }}
  ```

  ```text resultados renderizados.txt theme={null}
  \tThey said \x27This string can safely be inserted into JavaScript.\x27
  ```
</CodeGroup>

## escape\_url

Sustituye el contenido de una URL, aplicando protocolos específicos, eliminando caracteres no válidos o peligrosos y codificando entidades HTML. Devuelve una respuesta vacía si una URL es válida. Utiliza este filtro para las variables HubL que se usan dentro de los atributos HTML y que deben ser URLs válidas.

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set escape_string = "http://example.com/with space/<html>" %}
  <a href="https://developers.hubspot.es/docs{{ escape_string|escape_url }}"></a>
  ```

  ```text resultados renderizados.txt theme={null}
  <a href="http://example.com/with%20space/%3Chtml%3E"></a>
  ```
</CodeGroup>

## escapejson

Sustituye cadenas para que puedan ser utilizadas como valores en JSON.

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set escape_string = "<script>alert('oh no!')</script>" %}
  {% require_js position="head" %}
  <script data-search_input-config="config_{{ name }}" type="application/json">
  {
  "autosuggest_results_message": "{{ escape_string|escapejson }}"
  }
  </script>
  {% end_require_js %}
  ```

  ```text resultados renderizados.txt theme={null}
  <script
  data-search_input-config="config_widget_1234567"
  type="application/json"
  >
  {
  "autosuggest_results_message": "<script>alert('oh no!')<\/script>"
  }
  </script>
  ```
</CodeGroup>

## filesizeformat

Convierte un valor numérico en un tamaño de archivo legible (por ejemplo, 13 kB, 4,1 MB, 102 Bytes, etc.). De forma predeterminada, se utilizan prefijos decimales (por ejemplo, MB y GB), pero se pueden ajustar del parámetro `binary` a `true` para utilizar prefijos binarios como mebibyte (MiB) y gibibyte (GiB).

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set bytes = 10000 %}
  {{ bytes|filesizeformat(binary=true) }}
  ```

  ```text resultados renderizados.txt theme={null}
  9.8 KiB
  ```
</CodeGroup>

| Parámetro | Tipo     | Descripción                                                                                           |
| --------- | -------- | ----------------------------------------------------------------------------------------------------- |
| `binary`  | Booleano | Si se establece como `true`, se utilizan los prefijos binarios, como mebibyte (MiB) y gibibyte (GiB). |

## first

Devuelve el primer elemento de una secuencia.

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set my_sequence = ["Item 1", "Item 2", "Item 3"] %}
  {{ my_sequence|first }}
  ```

  ```text resultados renderizados.txt theme={null}
  Item 1
  ```
</CodeGroup>

## float

Convierte un valor en un número de punto flotante. Si la conversión no funciona, devolverá `0.0`. Puedes anular este valor predeterminado utilizando el primer parámetro.

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set my_text="25" %}
  {{ my_text|float + 17 }}
  ```

  ```text resultados renderizados.txt theme={null}
  42.0
  ```
</CodeGroup>

| Parámetro | Tipo   | Descripción                                     |
| --------- | ------ | ----------------------------------------------- |
| `default` | Número | Entero a devolver si la conversión no funciona. |

## forceescape

Aplica estrictamente el escape HTML. En el entorno de HubSpot no hay realmente un caso de uso para el doble escape, por lo que esto se comporta generalmente igual que el filtro de escape.

<CodeGroup>
  ```html example.html theme={null}
  {% set escape_string = "<div>This markup is printed as text</div>" %}
  {{ escape_string|forceescape }}
  ```

  ```html example.html theme={null}
  <div>This markup is printed as text</div>
  ```
</CodeGroup>

## format

Aplica el formato de cadena de Python a un objeto. El valor `%s` se puede sustituir con otra variable.

<CodeGroup>
  ```text hubl.txt theme={null}
  {{ "Hi %s %s"|format(contact.firstname, contact.lastname) }}
  ```

  ```text resultados renderizados.txt theme={null}
  Hi Monty Python
  ```
</CodeGroup>

## format\_currency (obsoleto)

<Warning>
  **Nota**: este filtro está [obsoleto](/cms/versions-deprecations/deprecated/hubl/filters-functions). En su lugar, utiliza el filtro [format\_currency\_value](#format_currency_value).
</Warning>

## format\_currency\_value

Da formato a un número como divisa, utilizando la divisa predeterminada del portal y la configuración regional especificada como parámetro. Reemplaza el filtro obsoleto [format\_currency](/cms/versions-deprecations/deprecated/hubl/filters-functions#format-currency).

<CodeGroup>
  ```text hubl.txt theme={null}
  {{ 100 | format_currency_value(locale='en-GB', currency='EUR', maxDecimalDigits=6, minDecimalDigits=1) }}
  ```

  ```text resultados renderizados.txt theme={null}
  €100.0
  ```
</CodeGroup>

| Parámetro          | Tipo   | Descripción                                                                                                                                                                                                                                   |
| ------------------ | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `locale`           | Cadena | [La etiqueta de lenguaje local de Java](https://www.oracle.com/java/technologies/javase/jdk8-jre8-suported-locales.html). El valor predeterminado es la página `locale.Format : ISO639LanguageCodeInLowercase-ISO3166CountryCodeInUppercase`. |
| `currency`         | Cadena | El [código ISO 4217 en orden alfabético](https://en.wikipedia.org/wiki/ISO_4217) de la divisa, por opción predeterminada, es la divisa predeterminada del portal. No se aceptan códigos numéricos.                                            |
| `minDecimalDigits` | Número | El mínimo de dígitos decimales que se pueden utilizar. De manera predeterminada, utiliza el número de decimales estándar de la moneda.                                                                                                        |
| `maxDecimalDigits` | Número | El máximo de dígitos decimales que se pueden utilizar. De manera predeterminada, utiliza el número de decimales estándar de la moneda.                                                                                                        |

## format\_date

Le da formato al componente de fecha de un objeto fecha.

<Warning>
  ### Nota:

  Este filtro debe usarse <u>únicamente</u> con variables que devuelvan una fecha. A partir del 30 de septiembre de 2024, este filtro ya no devolverá la fecha actual cuando se pase un valor nulo. Después de esa fecha, un valor nulo en el filtro devolverá el 30 de septiembre de 2024.
</Warning>

<CodeGroup>
  ```text hubl.txt theme={null}
  {{ content.publish_date | format_date('long') }}
  {{ content.publish_date | format_date('yyyy.MMMM.dd') }}
  {{ content.publish_date | format_date('medium', 'America/New_York', 'de-DE') }}
  ```

  ```text resultados renderizados.txt theme={null}
  November 28, 2022 02022.November.28 28.11.2022
  ```
</CodeGroup>

| Parámetro  | Tipo                                                                    | Descripción                                                                                                                                                                                                        |
| ---------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `format`   | `'short'` \| `'medium'` \| `'long'` \| `'full'` \| patrón personalizado | El formato a utilizar. Un patrón personalizado que se basa en el [Unicode LDML](https://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns).                                                            |
| `timeZone` | Cadena                                                                  | La zona horaria de la fecha de salida en el [formato IANA TZDB](https://data.iana.org/time-zones/tzdb/).                                                                                                           |
| `locale`   | Cadena                                                                  | La configuración regional a utilizar para formatos adaptados al idioma y región. Consulta la [lista de configuraciones regionales compatibles](https://www.oracle.com/java/technologies/javase/java8locales.html). |

## format\_datetime

Da formato a los componentes de fecha y hora de un objeto fecha. El filtro reemplaza el filtro obsoleto [datetimeformat](/cms/versions-deprecations/deprecated/hubl/filters-functions#datetimeformat-filter). De manera predeterminada, devuelve una fecha y hora en la zona horaria UTC-0.

<Warning>
  ### Nota:

  Este filtro debe usarse <u>únicamente</u> con variables que devuelvan una fecha. A partir del 30 de septiembre de 2024, este filtro ya no devolverá la fecha actual cuando se pase un valor nulo. Después de esa fecha, un valor nulo en el filtro devolverá el 30 de septiembre de 2024.
</Warning>

<CodeGroup>
  ```text hubl.txt theme={null}
  {{ content.publish_date | format_datetime('medium', 'America/New_York', 'de-DE') }}
  ```

  ```text resultados renderizados.txt theme={null}
  12/31/69 7:00 PM
  ```
</CodeGroup>

| Parámetro  | Tipo                                                                    | Descripción                                                                                                                                                                                                                                                                                                                                                            |
| ---------- | ----------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `format`   | `'short'` \| `'medium'` \| `'long'` \| `'full'` \| patrón personalizado | El formato a utilizar. Puede ser uno de los siguientes [Unicode LDML](https://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns). Cuando se utiliza `long` o `full`, la marca de tiempo incluirá una Z para indicar la hora UTC de desplazamiento cero (por ejemplo, `2:23:00 PM Z`). Para eliminar el designador Z, tienes que especificar un `timeZone`. |
| `timeZone` | Cadena                                                                  | La zona horaria de la fecha de salida en el [formato IANA TZDB](https://data.iana.org/time-zones/tzdb/). De forma predeterminada, devuelve la hora UTC.                                                                                                                                                                                                                |
| `locale`   | Cadena                                                                  | La configuración regional a utilizar para formatos adaptados al idioma y región. Consulta la [lista de configuraciones regionales compatibles](https://www.oracle.com/java/technologies/javase/java8locales.html).                                                                                                                                                     |

## format\_number

Le da formato a un número según la configuración regional específica. Incluye un segundo parámetro para ajustar la precisión decimal máxima.

<CodeGroup>
  ```text hubl.txt theme={null}
  {{ 1000|format_number('en-US') }}
  {{ 1000.333|format_number('fr') }}
  {{ 1000.333|format_number('en-US', 2) }}
  ```

  ```text resultados renderizados.txt theme={null}
  1,000
  1 000,333
  1,000.33
  ```
</CodeGroup>

| Parámetro          | Tipo   | Descripción                                                                                                                                                                                   |
| ------------------ | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `locale`           | Cadena | La configuración regional que se utilizará para el formato. Consulta la [lista de configuraciones regionales compatibles](https://www.oracle.com/java/technologies/javase/java8locales.html). |
| `maxDecimalDigits` | Número | El máximo de dígitos decimales que se pueden utilizar. De forma predeterminada, utilizará el número de dígitos decimales del valor introducido.                                               |

## format\_time

Le da formato al componente de fecha de un objeto fecha.

<Warning>
  ### Nota:

  Este filtro debe usarse <u>únicamente</u> con variables que devuelvan una fecha. A partir del 30 de septiembre de 2024, este filtro ya no devolverá la fecha actual cuando se pase un valor nulo. Después de esa fecha, un valor nulo en el filtro devolverá el 30 de septiembre de 2024.
</Warning>

<CodeGroup>
  ```text hubl.txt theme={null}
  {{ content.updated | format_time('long') }}
  {{ content.updated | format_time('hh:mm a') }}
  {{ content.updated | format_time('medium', 'America/New_York', 'de-DE') }}
  ```

  ```text resultados renderizados.txt theme={null}
  3:25:06 PM Z 03:25 PM 10:25:44
  ```
</CodeGroup>

| Parámetro  | Tipo                                                                    | Descripción                                                                                                                                                                                                                                                                                                                                                            |
| ---------- | ----------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `format`   | `'short'` \| `'medium'` \| `'long'` \| `'full'` \| patrón personalizado | El formato a utilizar. Puede ser uno de los siguientes [Unicode LDML](https://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns). Cuando se utiliza `long` o `full`, la marca de tiempo incluirá una Z para indicar la hora UTC de desplazamiento cero (por ejemplo, `2:23:00 PM Z`). Para eliminar el designador Z, tienes que especificar un `timeZone`. |
| `timeZone` | Cadena                                                                  | La zona horaria de la fecha de salida en el [formato IANA TZDB](https://data.iana.org/time-zones/tzdb/). De forma predeterminada, devuelve la hora UTC.                                                                                                                                                                                                                |
| `locale`   | Cadena                                                                  | La configuración regional a utilizar para formatos adaptados al idioma y región. Consulta la [lista de configuraciones regionales compatibles](https://www.oracle.com/java/technologies/javase/java8locales.html).                                                                                                                                                     |

## fromjson

Convierte una cadena JSON en un objeto.

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set obj ='{ "name":"Brian","role":"Owner" }' %}
  {{ obj|fromjson }}
  ```

  ```text resultados renderizados.txt theme={null}
  {role=Owner, name=Brian}
  ```
</CodeGroup>

## geo\_distance

Calcula la distancia elipsoidal en 2D entre dos puntos de la Tierra.

<CodeGroup>
  ```text hubl.txt theme={null}
  <!-- in the example below
  the HubDB Location =
  42.3667, -71.1060 (Cambridge, MA) |
  Chicago, IL = 37.3435, -122.0344 -->
  {{ row.location | geo_distance(37.3435, -122.0344, "mi") }} MI
  ```

  ```text resultados renderizados.txt theme={null}
  861.1655563461395 MI
  ```
</CodeGroup>

## groupby

El filtro groupby agrupa una secuencia de objetos por un atributo en común. El parámetro define el atributo común por el cual agrupar.

<CodeGroup>
  ```html example.html theme={null}
  <ul>
  {% for group in contents|groupby("blog_post_author") %}
  <li>{{ group.grouper }}
  <ul>
  {% for content in group.list %}
  <li>{{ content.name }}</li>
  {% endfor %}
  </ul>
  </li>
  {% endfor %}
  </ul>
  ```

  ```text resultados renderizados.txt theme={null}
  <ul>
  <li>
  Blog author 1
  <ul>
  <li>Post by Blog author 1</li>
  <li></li>
  <li>Post by Blog author 1</li>
  <li></li>
  <li>Post by Blog author 1</li>
  <li></li>
  </ul>
  </li>
  <li>
  Blog author 2
  <ul>
  <li>Post by Blog author 2</li>
  <li></li>
  <li>Post by Blog author 2</li>
  <li></li>
  <li>Post by Blog author 2</li>
  <li></li>
  </ul>
  </li>
  <li>
  Blog author 3
  <ul>
  <li>Post by Blog author 3</li>
  <li></li>
  <li>Post by Blog author 3</li>
  <li></li>
  <li>Post by Blog author 3</li>
  <li></li>
  </ul>
  </li>
  </ul>
  ```
</CodeGroup>

| Parámetro   | Descripción                             |
| ----------- | --------------------------------------- |
| `attribute` | El atributo por el que se va a agrupar. |

## indent

Indenta el texto dentro de una longitud utilizando espacios en blanco. Este filtro no es especialmente útil ni recomendable, ya que el compilador HTML de HubSpot elimina los espacios en blanco de forma automática. Sin embargo, se menciona aquí para ofrecer una descripción completa. El siguiente ejemplo muestra el filtro `indent` aplicado a una variable dentro de una etiqueta `<pre>`, de modo que los espacios en blanco no se eliminen. El primer parámetro controla la cantidad de espacios en blanco y el segundo booleano cambia la sangría de la primera línea.

<CodeGroup>
  ```html example.html theme={null}
  <pre>
  {% set var = "string to indent" %}
  {{ var|indent(2, true) }}
  </pre>
  ```

  ```text resultados renderizados.txt theme={null}
  string to indent
  ```
</CodeGroup>

| Parámetro      | Tipo     | Descripción                                               |
| -------------- | -------- | --------------------------------------------------------- |
| `width`        | Numérico | La cantidad de espacios en blanco que se aplicarán.       |
| `indent-first` | Booleano | Si se establece como `true`, se indenta la primera línea. |

## int

Convierte el valor en un entero. Si la conversión no funciona, devolverá `0`. Puedes anular este valor predeterminado utilizando el primer parámetro.

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set string="25" %}
  {{ string|int + 17 }}
  ```

  ```text resultados renderizados.txt theme={null}
  42
  ```
</CodeGroup>

| Parámetro | Tipo     | Descripción                                     |
| --------- | -------- | ----------------------------------------------- |
| `default` | Numérico | Entero a devolver si la conversión no funciona. |

## intersect

Este filtro devuelve la intersección de dos conjuntos o listas. La lista que el filtro devuelve contiene todos los elementos únicos que están contenidos en ambas listas.

<CodeGroup>
  ```text hubl.txt theme={null}
  {{ [1, 2, 3]|intersect([2, 3, 4, 5]) }}
  ```

  ```text resultados renderizados.txt theme={null}
  [2, 3]
  ```
</CodeGroup>

| Parámetro | Tipo   | Descripción                                                                                |
| --------- | ------ | ------------------------------------------------------------------------------------------ |
| `list`    | Matriz | La segunda lista con la que se comparará la lista original para encontrar su intersección. |

## ipaddr

Se evalúa como `true` si el valor es una dirección IPv4 o IPv6 válida.

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set ip = "1.0.0.1" %}
  {% if ip|ipaddr %}
  The string is a valid IP address
  {% endif %}
  ```

  ```text resultados renderizados.txt theme={null}
  The string is a valid IP address
  ```
</CodeGroup>

## join

Devuelve una cadena que es la concatenación de las cadenas de la secuencia. El separador entre elementos es una cadena vacía por opción predeterminada, puedes definirlo con un parámetro opcional. El segundo parámetro puede utilizarse para especificar un atributo a unir.

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set my_list = [1, 2, 3] %}
  {% set sep = "---" %}
  {{ my_list|join }}
  {{ my_list|join("|") }}
  {{ my_list|join(sep) }}
  ```

  ```text resultados renderizados.txt theme={null}
  123 1|2|3 1---2---3
  ```
</CodeGroup>

| Parámetro   | Tipo             | Descripción                                      |
| ----------- | ---------------- | ------------------------------------------------ |
| `delimiter` | Cadena           | El delimitador a utilizar al concatenar cadenas. |
| `attribute` | Variable de HubL | Atributo de valor para unir en un objeto.        |

## last

Devuelve el último elemento de una secuencia.

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set my_sequence = ["Item 1", "Item 2", "Item 3"] %}
  {% my_sequence|last %}
  ```

  ```text resultados renderizados.txt theme={null}
  Item 3
  ```
</CodeGroup>

## length

Devuelve el número de elementos de una secuencia o estructura de datos.

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set services = ["Web design", "SEO", "Inbound Marketing", "PPC"] %}
  {{ services|length }}
  ```

  ```text resultados renderizados.txt theme={null}
  4
  ```
</CodeGroup>

## list

Convierte los valores en una lista. Las cadenas se devolverán como caracteres separados a menos que estén contenidas en delimitadores de secuencia de corchetes `[ ]`.

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set one = 1 %}
  {% set two = 2 %}
  {% set three = "three" %}
  {% set four = ["four"] %}
  {% set list_num = one|list + two|list + three|list + four|list %}
  {{ list_num }}
  ```

  ```text resultados renderizados.txt theme={null}
  [1, 2, t, h, r, e, e, four]
  ```
</CodeGroup>

## log

Calcula el logaritmo natural de un número.

<CodeGroup>
  ```text hubl.txt theme={null}
  {{ 10|log }}
  {{ 65536|log(2) }}
  ```

  ```text resultados renderizados.txt theme={null}
  2.302585092994046 16.0
  ```
</CodeGroup>

| Parámetro | Tipo   | Descripción                                     |
| --------- | ------ | ----------------------------------------------- |
| `base`    | Número | La base a utilizar para el cálculo logarítmico. |

## lower

Convierte todas las letras de un valor a minúsculas.

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set text="Text to MAKE LowercaSe" %}
  {{ text|lower }}
  ```

  ```text resultados renderizados.txt theme={null}
  text to make lowercase
  ```
</CodeGroup>

## map

Aplica un filtro a una secuencia de objetos o busca un atributo. Este filtro es especialmente útil cuando trabajas con listas de objetos y solo necesitas obtener un valor en particular.

El uso básico es la asignación en un atributo. Por ejemplo, si deseas utilizar la lógica condicional para comprobar si un valor está presente en un atributo particular de un dicc. Como alternativa, puedes permitir que aplique un filtro pasando el nombre del filtro seguido de los argumentos.

<CodeGroup>
  ```text hubl.txt theme={null}
  {# Usage 1 #}
  Apply a filter to a sequence:
  {% set seq = ["item1", "item2", "item3"] %}
  {{ seq|map("upper") }}

  {# Usage 2 #}
  Look up an attribute:
  {{ content|map("currentState")}}
  ```

  ```text resultados renderizados.txt theme={null}
  Apply a filter to a sequence: [ITEM1, ITEM2, ITEM3]
  Look up an attribute: [DRAFT]
  ```
</CodeGroup>

| Parámetro | Tipo                                        | Descripción |
| --------- | ------------------------------------------- | ----------- |
| `filter`  | Filtro a aplicar a la secuencia de objetos. |             |

## md5

Calcula el [hash md5](https://en.wikipedia.org/wiki/MD5) del objeto dado.

<CodeGroup>
  ```text hubl.txt theme={null}
  {{ content.absolute_url|md5 }}
  ```

  ```text resultados renderizados.txt theme={null}
  923adb4ce05a4c6342c04c80be88d15e
  ```
</CodeGroup>

## minus\_time

Resta una cantidad de tiempo a un objeto de fecha y hora.

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set date = "2018-07-14T14:31:30+0530"|strtotime("yyyy-MM-dd'T'HH:mm:ssZ") %}
  {{ date }}
  {{ date|minus_time(2, "months") }}
  ```

  ```text resultados renderizados.txt theme={null}
  2018-07-14 14:31:30 2018-05-14 14:31:30
  ```
</CodeGroup>

| Parámetro  | Tipo     | Descripción                                                                                                                                                                                                 |
| ---------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `diff`     | Numérico | Cantidad a restar.                                                                                                                                                                                          |
| `timeunit` | Cadena   | Las unidades de tiempo válidas son `nanos` , `micros` , `millis` , `seconds` , `minutes` , `hours` , `half_days` , `days` , `weeks` , `months` , `years` , `decades` , `centuries` , `millennia` y `eras` . |

## multiply

Multiplica un valor por un número. Funciona igual que el [\ operador \*](/cms/reference/hubl/operators-and-expression-tests).

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set n = 20 %}
  {{ n|multiply(3) }}
  ```

  ```text resultados renderizados.txt theme={null}
  60
  ```
</CodeGroup>

## plus\_time

Agrega una cantidad de tiempo a un objeto de fecha y hora.

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set date = "2018-07-14T14:31:30+0530"|strtotime("yyyy-MM-dd'T'HH:mm:ssZ") %}
  {{ date }}
  {{ date|plus_time(5, "days") }}
  ```

  ```text resultados renderizados.txt theme={null}
  2018-07-14 14:31:30 2018-07-19 14:31:30
  ```
</CodeGroup>

| Parámetro  | Tipo     | Descripción                                                                                                                                                                                                 |
| ---------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `diff`     | Numérico | Cantidad a restar.                                                                                                                                                                                          |
| `timeunit` | Cadena   | Las unidades de tiempo válidas son `nanos` , `micros` , `millis` , `seconds` , `minutes` , `hours` , `half_days` , `days` , `weeks` , `months` , `years` , `decades` , `centuries` , `millennia` y `eras` . |

## pprint

Muestra una variable con formato legible. Muestra el tipo de variable y otra información útil para la depuración.

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set this_var ="Variable that I want to debug" %}
  {{ this_var|pprint }}
  ```

  ```text resultados renderizados.txt theme={null}
  (String: Variable that I want to debug)
  ```
</CodeGroup>

## random

Devuelve un elemento aleatorio de la secuencia.

<Warning>
  ### Nota:

  Cuando uses este filtro, la página se [prerrenderizará](/cms/best-practices/testing-staging-performance/prerendering) periódicamente en lugar de cada vez que se actualice el contenido de la página. Esto significa que el contenido filtrado <u>no</u> se actualizará cada vez que se cargue la página de nuevo.

  Esto puede no ser un problema para ciertos tipos de contenido, como mostrar una lista aleatoria de publicaciones de blog. Sin embargo, si necesitas que el contenido cambie al azar cada vez que se carga una página, deberías usar JavaScript para mostrar de forma aleatoria el contenido del lado del cliente.
</Warning>

<CodeGroup>
  ```text hubl.txt theme={null}
  {% for content in contents|random %}
  <div class="post-item">Post item markup</div>
  {% endfor %}
  ```

  ```text resultados renderizados.txt theme={null}
  <div class="post-item">Random post</div>
  ```
</CodeGroup>

## regex\_replace

Busca un patrón de expresión regular y lo sustituye por una secuencia de caracteres. El primer argumento es un patrón de expresión regular estilo RE2, el segundo es la cadena de sustitución.

Más información sobre [la sintaxis regex RE2](https://github.com/google/re2/wiki/Syntax).

<CodeGroup>
  ```text hubl.txt theme={null}
  {{ "contact-us-2"|regex_replace("[^a-zA-Z]", "") }}
  ```

  ```text resultados renderizados.txt theme={null}
  contactus
  ```
</CodeGroup>

## reject

Filtra una secuencia de objetos aplicando una [prueba de expresión](/cms/reference/hubl/operators-and-expression-tests) al objeto y rechazando los que tienen éxito en la prueba.

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set some_numbers = [10, 12, 13, 3, 5, 17, 22] %}
  {{ some_numbers|reject("even") }}
  ```

  ```text resultados renderizados.txt theme={null}
  [13, 3, 5, 17]
  ```
</CodeGroup>

| Parámetro  | Tipo   | Descripción                                                                                                                           |
| ---------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------- |
| `exp_text` | Cadena | El nombre de la [prueba de expresión](/cms/reference/hubl/operators-and-expression-tests#expression-tests) que se aplicará al objeto. |

## rejectattr

Filtra una secuencia de objetos aplicando una prueba a un atributo de un objeto y rechazando los que tienen éxito en la prueba.

<CodeGroup>
  ```html example.html theme={null}
  {% for content in contents|rejectattr("post_list_summary_featured_image") %}
  <div class="post-item">
  {% if content.post_list_summary_featured_image %}
  <div class="hs-featured-image-wrapper">
  <a href="https://developers.hubspot.es/docs{{content.absolute_url}}" title="" class="hs-featured-image-link">
  <img src="{{ content.post_list_summary_featured_image }}" class="hs-featured-image">
  </a>
  </div>
  {% endif %}
  {{ content.post_list_content|safe }}
  </div>
  {% endfor %}
  ```

  ```html example.html theme={null}
  <div class="post-item">Post with no featured image</div>
  <div class="post-item">Post with no featured image</div>
  <div class="post-item">Post with no featured image</div>
  ```
</CodeGroup>

| Parámetro        | Tipo   | Descripción                                                                                                                           |
| ---------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------- |
| `attribute_name` | Cadena | Especifica el atributo a seleccionar. Puedes acceder a los atributos anidados utilizando la notación de puntos.                       |
| `exp_test`       | Cadena | el nombre de la [prueba de expresión](/cms/reference/hubl/operators-and-expression-tests#expression-tests) que se aplicará al objeto. |

## render

Procesa cadenas que contienen HubL de manera anticipada para que el resultado pueda pasarse a otros filtros.

<CodeGroup>
  ```html example.html theme={null}
  {{ personalization_token("contact.lastname", "default value")|render|lower }}
  ```

  ```html example.html theme={null}
  mclaren
  ```
</CodeGroup>

## replace

Reemplaza todas las instancias de una subcadena por una nueva.

<CodeGroup>
  ```html example.html theme={null}
  {% if topic %}
  <h3>Posts about {{ page_meta.html_title|replace("Blog | ", "") }}</h3>
  {% endif %}
  ```

  ```html example.html theme={null}
  <h3>Posts about topic name</h3>
  ```
</CodeGroup>

| Parámetro | Tipo   | Descripción                                                     |
| --------- | ------ | --------------------------------------------------------------- |
| `old`     | Cadena | La subcadena que se debe reemplazar.                            |
| `new`     | Cadena | La subcadena que será reemplazada.                              |
| `count`   | Número | Si se proporciona, solo se reemplazan las primeras ocurrencias. |

## reverse

Revierte el objeto o devuelve un iterador que recorre el objeto en sentido inverso. Para invertir una lista utiliza [.reverse()](/cms/reference/hubl/functions#reverse)

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] %}
  {% for num in nums|reverse %}
  {{ num }}
  {% endfor %}
  ```

  ```text resultados renderizados.txt theme={null}
  10 9 8 7 6 5 4 3 2 1
  ```
</CodeGroup>

## root

Extrae la raíz cuadrada de un valor.

<CodeGroup>
  ```text hubl.txt theme={null}
  {{ 16|root }}
  {{ 625|root(4) }}
  ```

  ```text resultados renderizados.txt theme={null}
  4 5
  ```
</CodeGroup>

| Parámetro  | Tipo   | Descripción                                 |
| ---------- | ------ | ------------------------------------------- |
| `nth_root` | Número | La raíz enésima a utilizar para el cálculo. |

## round

Redondea un número con la precisión especificada.

<CodeGroup>
  ```text hubl.txt theme={null}
  {{ 52.5|round }}
  {{ 52.5|round(0, "floor") }}
  ```

  ```text resultados renderizados.txt theme={null}
  53 52
  ```
</CodeGroup>

| Parámetro         | Tipo                                                 | Descripción                                                                                                                                                      |
| ----------------- | ---------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `precision`       | Número                                               | Especifica la precisión del redondeo.                                                                                                                            |
| `rounding_method` | `'common'` (predeterminado) \| `'ceil'` \| `'floor'` | las opciones incluyen `common` redondea hacia arriba o hacia abajo (predeterminado); `ceil` siempre redondea hacia arriba; `floor` siempre redondea hacia abajo. |

## safe

Marca el valor como seguro, lo que evita que se escape en entornos con escape automático activado.

<CodeGroup>
  ```text hubl.txt theme={null}
  {{ content.post_list_content|safe }}
  ```

  ```html example.html theme={null}
  <p>HTML post content that is not escaped.</p>
  ```
</CodeGroup>

## sanitize\_html

Depura el contenido de una entrada HTML para la salida de contenido de texto enriquecido. Acepta una cadena y luego elimina las etiquetas HTML que no están permitidas. Utiliza este filtro para las variables HubL que se usan en HTML y que deberían permitir un HTML seguro.

Puedes incluir los siguientes parámetros para permitir los específicos tipos de etiquetas HTML: `FORMATTING`, `BLOCKS`, `STYLES`, `LINKS`, `TABLES`, `IMAGES`. Por ejemplo, `sanitize_html(IMAGES)`.

El uso de `sanitize_html` incluirá todos los parámetros en el filtro.

También puedes incluir un parámetro `STRIP` para eliminar <u>todo</u> el HTML. Todo el contenido también se ejecuta mediante `escape_jinjava` para evitar la interpretación anidada.

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set escape_string = "This <br> <div>markup is <img src='test.com/image'> <span>printed</span> as text.</div>" %}
  {{ escape_string|sanitize_html("IMAGES") }}
  ```

  ```html example.html theme={null}
  This  markup is <img src="test.com/image"> printed as text.</div>
  ```
</CodeGroup>

## select

Filtra una secuencia de objetos aplicando una prueba al objeto y seleccionando solo los que tienen éxito en la prueba.

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set some_numbers = [10, 12, 13, 3, 5, 17, 22] %}
  {{ some_numbers|select("even") }}
  ```

  ```html example.html theme={null}
  [10, 12, 22]
  ```
</CodeGroup>

| Parámetro  | Tipo   | Descripción                                       |
| ---------- | ------ | ------------------------------------------------- |
| `exp_text` | Cadena | La prueba de expresión que se aplicará al objeto. |

## selectattr

Filtra una secuencia de objetos aplicando una prueba a un atributo de un objeto y seleccionando solo los que tienen éxito en la prueba.

<CodeGroup>
  ```html example.html theme={null}
  {% for content in contents|selectattr("post_list_summary_featured_image") %}
  <div class="post-item">
  {% if content.post_list_summary_featured_image %}
  <div class="hs-featured-image-wrapper">
  <a href="https://developers.hubspot.es/docs{{content.absolute_url}}" title="" class="hs-featured-image-link">
  <img src="{{ content.post_list_summary_featured_image }}" class="hs-featured-image">
  </a>
  </div>
  {% endif %}
  {{ content.post_list_content|safe }}
  </div>
  {% endfor %}
  ```

  ```html example.html theme={null}
  <div class="post-item">
  <div class="hs-featured-image-wrapper">
  <a
  href="http://blog.hubspot.com/marketing/how-to-get-a-job"
  title=""
  class="hs-featured-image-link"
  >
  <img
  src="//cdn2.hubspot.net/hub/53/hubfs/00-Blog-Related_Images/landing-a-job-featured-image.png?t=1431452322770&width=761"
  class="hs-featured-image"
  />
  </a>
  </div>
  Post with featured image
  </div>
  ```
</CodeGroup>

| Parámetro        | Tipo   | Descripción                                                                                                                           |
| ---------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------- |
| `attribute_name` | Cadena | El atributo que debe ponerse a prueba. Puedes acceder a los atributos anidados utilizando la notación de puntos.                      |
| `exp_test`       | Cadena | el nombre de la [prueba de expresión](/cms/reference/hubl/operators-and-expression-tests#expression-tests) que se aplicará al objeto. |
| `val`            | Cadena | Valor a comprobar.                                                                                                                    |

## shuffle

Organiza de forma aleatoria el orden de iteración a través de una secuencia. El siguiente ejemplo mezcla un bucle de blog estándar.

<Warning>
  ### Nota:

  Cuando uses este filtro, la página se [prerrenderizará](/cms/best-practices/testing-staging-performance/prerendering) periódicamente en lugar de cada vez que se actualice el contenido de la página. Esto significa que el contenido filtrado <u>no</u> se actualizará cada vez que se cargue la página de nuevo.

  Esto puede no ser un problema para ciertos tipos de contenido, como mostrar una lista aleatoria de publicaciones de blog. Sin embargo, si necesitas que el contenido cambie al azar cada vez que se carga una página, deberías usar JavaScript para mostrar de forma aleatoria el contenido del lado del cliente.
</Warning>

<CodeGroup>
  ```html example.html theme={null}
  {% for content in contents|shuffle %}
  <div class="post-item">Markup of each post</div>
  {% endfor %}
  ```

  ```html example.html theme={null}
  <div class="post-item">Markup of each post 5</div>
  <div class="post-item">Markup of each post 3</div>
  <div class="post-item">Markup of each post 1</div>
  <div class="post-item">Markup of each post 2</div>
  <div class="post-item">Markup of each post 4</div>
  ```
</CodeGroup>

## slice

Corta un iterador y devuelve una lista de listas que contienen esos elementos. El primer parámetro especifica cuántos elementos serán cortados y el segundo parámetro especifica los caracteres para rellenar los cortes vacíos.

<CodeGroup>
  ```html example.html theme={null}
  {% set items = ["laptops", "tablets", "smartphones", "smart watches", "TVs"] %}
  <div class="columwrapper">
  {% for column in items|slice(3," ") %}
  <ul class="column-{{ loop.index }}">
  {% for item in column %}
  <li>{{ item }}</li>
  {% endfor %}
  </ul>
  {% endfor %}
  </div>
  ```

  ```html example.html theme={null}
  <div class="columwrapper">
  <ul class="column-1">
  <li>laptops</li>
  <li>tablets</li>
  <li>smartphones</li>
  </ul>

  <ul class="column-2">
  <li>smart watches</li>
  <li>TVs</li>
  <li></li>
  </ul>
  </div>
  ```
</CodeGroup>

| Parámetro | Tipo     | Descripción                                                |
| --------- | -------- | ---------------------------------------------------------- |
| `slices`  | Numérico | Cuántos artículos se cortarán.                             |
| `filler`  | Cadena   | Especifica los caracteres para rellenar los cortes vacíos. |

## sort

Ordena un iterable. Este filtro requiere que todos los parámetros se ordenen por un atributo en HubSpot. El primer parámetro es un booleano para invertir el orden de clasificación y el segundo parámetro determina si el orden distingue entre mayúsculas y minúsculas. El último parámetro especifica un atributo por el que ordenar. En el siguiente ejemplo, las entradas de un blog se representan y se ordenan alfabéticamente por nombre.

<CodeGroup>
  ```html example.html theme={null}
  {% set my_posts = blog_recent_posts("default", limit=5) %}

  {% for item in my_posts|sort(False, False, "name") %}
  {{ item.name }}<br>

  {% endfor %}
  ```

  ```html example.html theme={null}
  A post<br />
  B post<br />
  C post<br />
  D post<br />
  E post<br />
  ```
</CodeGroup>

| Parámetro        | Tipo     | Descripción                                                                       |
| ---------------- | -------- | --------------------------------------------------------------------------------- |
| `reverse`        | Booleano | Establécelo como `true` para invertir el orden de clasificación.                  |
| `case_sensitive` | Booleano | Establécelo como `true` para que el orden distinga entre mayúsculas y minúsculas. |
| `attribute`      | Cadena   | Atributo por el que ordenar. Puedes omitirlo al ordenar una lista.                |

## split

Divide la cadena de entrada en una lista usando el separador indicado. El primer parámetro especifica el separador entre el que se divide la variable y el segundo parámetro determina cuántas veces debe dividirse la variable. El resto de los artículos permanecerán en el grupo. En el siguiente ejemplo, una cadena de nombres se divide en el `;` para los primeros cuatro nombres.

<CodeGroup>
  ```html example.html theme={null}
  {% set string_to_split = "Mark; Irving; Helly; Dylan; Milchick; Harmony;" %}
  {% set names = string_to_split|split(";", 4) %}
  <ul>
  {% for name in names %}
  <li>{{ name }}</li>
  {% endfor %}
  </ul>
  ```

  ```html example.html theme={null}
  <ul>
  <li>Mark</li>
  <li>Irving</li>
  <li>Helly</li>
  <li>Dylan; Milchick; Harmony;</li>
  </ul>
  ```
</CodeGroup>

| Parámetro               | Tipo   | Descripción                                                                                         |
| ----------------------- | ------ | --------------------------------------------------------------------------------------------------- |
| `character_to_split_by` | Cadena | Especifica el separador entre el que se divide la variable.                                         |
| `number_of_splits`      | Número | Determina cuántas veces debe dividirse la variable. Los elementos restantes permanecerán agrupados. |

## string

Convierte un tipo de variable diferente en una cadena. En el siguiente ejemplo, un número entero se convierte en una cadena (se utiliza `pprint` para confirmar el cambio de tipo de la variable).

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set number_to_string = 45 %}
  {{ number_to_string|string|pprint }}
  ```

  ```text resultados renderizados.txt theme={null}
  (String: 45)
  ```
</CodeGroup>

## striptags

Elimina las etiquetas SGML y XML, y reemplaza los espacios en blanco adyacentes por un espacio. Este filtro puede utilizarse para eliminar cualquier etiqueta HTML de una variable.

<CodeGroup>
  ```html example.html theme={null}
  {% set some_html = "<div><strong>Some text</strong></div>" %}
  {{ some_html|striptags }}
  ```

  ```html example.html theme={null}
  some text
  ```
</CodeGroup>

## strtodate

Convierte una cadena y un formato de fecha en un objeto de fecha.

<CodeGroup>
  ```text hubl.txt theme={null}
  {{ '3/3/21'|strtodate('M/d/yy') }}
  ```

  ```text resultados renderizados.txt theme={null}
  2021-03-03 00:00:00
  ```
</CodeGroup>

| Parámetro    | Tipo   | Descripción                                                                                                  |
| ------------ | ------ | ------------------------------------------------------------------------------------------------------------ |
| `dateFormat` | Cadena | El [formato de fecha](https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html) a utilizar. |

## strtotime

Convierte una cadena de fecha y hora y un formato datetime en un objeto de fecha y hora.

<CodeGroup>
  ```text hubl.txt theme={null}
  {{ "2018-07-14T14:31:30+0530"|strtotime("yyyy-MM-dd'T'HH:mm:ssZ")|unixtimestamp }}
  ```

  ```text resultados renderizados.txt theme={null}
  1531558890000
  ```
</CodeGroup>

| Parámetro        | Tipo   | Descripción                                                                                                         |
| ---------------- | ------ | ------------------------------------------------------------------------------------------------------------------- |
| `datetimeFormat` | Cadena | El [formato de fecha y hora](https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html) a utilizar. |

## sum

Agrega valores numéricos en una secuencia. El primer parámetro puede especificar un atributo opcional y el segundo parámetro establece un valor a devolver si no hay nada en la variable a sumar.

<CodeGroup>
  ```text hubl.txt theme={null}
  // Simple sum
  {% set sum_this = [1, 2, 3, 4, 5] %}
  {{ sum_this|sum }}

  // Sum of attribute
  {% set items = [15, 10] %}
  {% set dict_var = [{"name": "Item1", "price": "20"}, {"name": "Item2", "price": "10"}] %}
  Total: {{ dict_var|sum(attribute="price") }}
  ```

  ```text resultados renderizados.txt theme={null}
  15 Total: 30
  ```
</CodeGroup>

| Parámetro           | Tipo   | Descripción                                             |
| ------------------- | ------ | ------------------------------------------------------- |
| `attribute`         | Cadena | Atributo a sumar.                                       |
| `return_if_nothing` | Cadena | Valor a devolver si no hay nada en la variable a sumar. |

## symmetric\_difference

Este filtro devuelve la diferencia simétrica de dos conjuntos o listas. La lista que el filtro devuelve contiene todos los elementos únicos que están en la primera lista pero no en la segunda, o están en la segunda lista pero no en la primera.

<CodeGroup>
  ```text hubl.txt theme={null}
  {{ [1, 2, 3]|symmetric_difference([2, 3, 4, 5]) }}
  ```

  ```text resultados renderizados.txt theme={null}
  [1, 4, 5]
  ```
</CodeGroup>

| Parámetro | Tipo   | Descripción                                                                                        |
| --------- | ------ | -------------------------------------------------------------------------------------------------- |
| `list`    | Matriz | La segunda lista con la que comparar para encontrar la diferencia simétrica con la lista original. |

## title

Devuelve una versión del valor en formato de título (es decir, las palabras comenzarán con letras mayúsculas y el resto de los caracteres estarán en minúsculas).

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set my_title="my title should be title case" %}
  {{ my_title|title }}
  ```

  ```text resultados renderizados.txt theme={null}
  My Title Should Be Title Case
  ```
</CodeGroup>

## tojson

Escribe un objeto como una cadena JSON.

<CodeGroup>
  ```text hubl.txt theme={null}
  {% for content in contents %}
  {{ content.blog_post_author|tojson }}
  {% endfor %}
  ```

  ```json example.json theme={null}
  {
  "portalId": 1234567,
  "id": 12312253109,
  "created": 1566413741989,
  "updated": 1566414012799,
  "deletedAt": 0,
  "fullName": "Sample User",
  "email": "sampleUser@example.com",
  "userId": null,
  "username": null,
  "slug": "sample-user",
  "jsonBody": {
  "avatar": "https://app.hubspot.com/settings/avatar/109d6874a0cb066c1c7263ac5df6ce7a",
  "bio": "Sample Bio",
  "facebook": "",
  "linkedin": "",
  "twitter": "",
  "website": "https://www.hubspot.com"
  },
  "bio": "Sample Bio",
  "facebook": "",
  "linkedin": "",
  "avatar": "https://app.hubspot.com/settings/avatar/109d6874a0cb066c1c7263ac5df6ce7a",
  "gravatarUrl": "https://app.hubspot.com/settings/avatar/108bb5ac667ded34796271437dfe8d58",
  "twitterUsername": "",
  "hasSocialProfiles": false,
  "website": "https://www.hubspot.com",
  "twitter": "",
  "displayName": "Sample User"
  }
  ```
</CodeGroup>

## trim

Elimina los espacios en blanco iniciales y finales. HubSpot ya recorta los espacios en blanco del marcado, pero este filtro está documentado para que sea más completo.

<CodeGroup>
  ```text hubl.txt theme={null}
  {{ " remove whitespace " }}
  {{ " remove whitespace "|trim }}
  ```

  ```text resultados renderizados.txt theme={null}
  remove whitespace remove whitespace
  ```
</CodeGroup>

## truncate

Corta el texto después de un determinado número de caracteres. El valor predeterminado es 255. Los caracteres HTML se incluyen en este conteo.

<Warning>
  **Nota:** ya que este filtro depende de los espacios entre palabras para acortar las cadenas, es posible que no funcione correctamente en idiomas que no los utilizan, como el japonés.
</Warning>

<CodeGroup>
  ```text hubl.txt theme={null}
  {{ "I only want to show the first sentence. Not the second."|truncate(40) }}
  {{ "I only want to show the first sentence. Not the second."|truncate(35, true, "..........") }}
  ```

  ```text resultados renderizados.txt theme={null}
  I only want to show the first sente..........
  ```
</CodeGroup>

| Parámetro              | Tipo     | Descripción                                                                                                                |
| ---------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------- |
| `number_of_characters` | Número   | Número de caracteres permitidos antes de cortar el texto. Por opción predeterminada es 255.                                |
| `breakword`            | Booleano | Si es `true`, el filtro cortará el texto a lo largo. En el caso contrario, si es `false`, se descartará la última palabra. |
| `end`                  | Cadena   | Anula los caracteres finales '...' predeterminados después del corte.                                                      |

## truncatehtml

Corta una cadena, respetando el marcado HTML (es decir, cerrará correctamente todas las etiquetas anidadas). Esto evitará que una etiqueta permanezca abierta después del corte. Los caracteres HTML no cuentan en el total de caracteres.

<Warning>
  **Nota:** ya que este filtro depende de los espacios entre palabras para acortar las cadenas, es posible que no funcione correctamente en idiomas que no los utilizan, como el japonés.
</Warning>

<CodeGroup>
  ```html example.html theme={null}
  {% set html_text = "<p>I want to truncate this text without breaking my HTML<p>" %}
  {{ html_text|truncatehtml(28, "..." , false) }}
  ```

  ```html example.html theme={null}
  <p>I want to truncate this..</p>
  ```
</CodeGroup>

| Parámetro              | Tipo     | Descripción                                                                                                                                                                                                                                                               |
| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `number_of_characters` | Número   | Número de caracteres permitidos antes de cortar el texto. Por opción predeterminada es 255.                                                                                                                                                                               |
| `end`                  | Cadena   | Anula los caracteres finales '...' predeterminados después del corte.                                                                                                                                                                                                     |
| `breakword`            | Booleano | Valor booleano. Si es `true`, el filtro cortará el texto a lo largo. Si es `false` (predeterminado), se descartará la última palabra. Si solo utilizas uno de los parámetros opcionales, utiliza argumentos de palabra clave, como`truncatehtml(70, breakwords = false)`. |

## unescape\_html

Convierte texto con entidades codificadas en HTML a sus equivalentes en Unicode.

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set escape_string = "me & you" %}
  {{ escape_string|unescape_html }}
  ```

  ```text resultados renderizados.txt theme={null}
  me & you
  ```
</CodeGroup>

## union

Este filtro devuelve la unión de dos conjuntos o listas. La lista que el filtro devuelve contiene todos los elementos únicos que están en cualquiera de las dos listas.

<CodeGroup>
  ```text hubl.txt theme={null}
  {{ [1, 2, 3]|union([2, 3, 4, 5]) }}
  ```

  ```text resultados renderizados.txt theme={null}
  [1, 2, 3, 4, 5]
  ```
</CodeGroup>

| Parámetro | Tipo   | Descripción                                    |
| --------- | ------ | ---------------------------------------------- |
| `list`    | Matriz | La segunda lista a unir con la lista original. |

## unique

Este filtro extrae un conjunto único de una secuencia o dicc. de objetos. Al filtrar un dicc., como una lista de mensajes devueltos por una función, puedes especificar qué atributo se utiliza para desduplicar los elementos en el dicc.

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set my_sequence = ["one", "one", "two", "three" ] %}
  {{ my_sequence|unique }}
  ```

  ```text resultados renderizados.txt theme={null}
  [one, two, three]
  ```
</CodeGroup>

| Parámetro | Tipo   | Descripción                                                             |
| --------- | ------ | ----------------------------------------------------------------------- |
| `attr`    | Cadena | Especifica el atributo que debe utilizarse al filtrar un valor de dicc. |

## unixtimestamp

Este filtro convierte un objeto de fecha y hora en una marca de tiempo Unix.

<Warning>
  ### Nota:

  Este filtro debe usarse <u>únicamente</u> con variables que devuelvan una fecha. A partir del 30 de septiembre de 2024, este filtro ya no devolverá la fecha actual cuando se pase un valor nulo. Después de esa fecha, un valor nulo en el filtro devolverá el `September 30, 2024`.
</Warning>

<CodeGroup>
  ```text hubl.txt theme={null}
  {{ local_dt }}
  {{ local_dt|unixtimestamp }}
  ```

  ```text resultados renderizados.txt theme={null}
  2017-01-30 17:11:44 1485814304000
  ```
</CodeGroup>

## upper

Convierte todas las letras de un valor a mayúsculas.

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set text="text to make uppercase" %}
  {{ text|upper }}
  ```

  ```text resultados renderizados.txt theme={null}
  TEXT TO MAKE UPPERCASE
  ```
</CodeGroup>

## urlencode

Escapa y codifica la URL de una cadena usando el formato UTF-8. Acepta tanto diccionarios como cadenas regulares, así como iterables por pares.

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set encode_value="Escape & URL encode this string" %}
  {{ encode_value|urlencode }}
  ```

  ```text resultados renderizados.txt theme={null}
  Escape+%26+URL+encode+this+string
  ```
</CodeGroup>

## urldecode

Decodifica las cadenas de URL codificadas de vuelta a la URL original. Acepta tanto diccionarios como cadenas regulares, así como iterables por pares.

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set decode_value="Escape+%26+URL+decode+this+string" %}
  {{ decode_value|urldecode }}
  ```

  ```text resultados renderizados.txt theme={null}
  Escape & URL decode this string
  ```
</CodeGroup>

## urlize

Convierte direcciones URL en texto sin formato a enlaces en los que se puede hacer clic. Si le pasas al filtro un número entero adicional, acortará las URL a ese número. El segundo parámetro es un booleano que dicta si el enlace es rel="no follow". El último parámetro permite especificar si el enlace se abrirá en una nueva pestaña.

| Parámetro         | Tipo     | Descripción                                                        |
| ----------------- | -------- | ------------------------------------------------------------------ |
| `shorten_text`    | Número   | Número entero que acortará las URL al número deseado.              |
| `no_follow`       | Booleano | Si se establece como `true`, el enlace incluirá `rel="no follow"`. |
| `target="_blank"` | Cadena   | Especifica si el enlace se abrirá en una pestaña nueva.            |

<CodeGroup>
  ```text hubl.txt theme={null}
  {{ "http://hubspot.com/"|urlize }}
  {{ "http://hubspot.com/"|urlize(10,true) }}
  {{ "http://hubspot.com/"|urlize("",true) }}
  {{ "http://hubspot.com/"|urlize("",false,target="_blank") }}
  ```

  ```html example.html theme={null}
  <a href="https://developers.hubspot.es/docs//hubspot.com/">http://hubspot.com/</a>
  <a href="https://developers.hubspot.es/docs//hubspot.com/" rel="nofollow">http://...</a>
  <a href="https://developers.hubspot.es/docs//hubspot.com/" rel="nofollow">http://hubspot.com/</a>
  <a href="https://developers.hubspot.es/docs//hubspot.com/" target="_blank">http://hubspot.com/</a>
  ```
</CodeGroup>

## wordcount

Cuenta el número de palabras de una cadena.

<Warning>
  Si la cadena contiene HTML, utiliza el filtro `striptags` para obtener un recuento preciso.
</Warning>

<CodeGroup>
  ```text hubl.txt theme={null}
  {%  set count_words = "Count the number of words in this variable"  %}
  {{ count_words|wordcount }}
  ```

  ```text resultados renderizados.txt theme={null}
  8
  ```
</CodeGroup>

## wordwrap

Hace que las palabras se cierren al llegar a un número determinado de caracteres. Esto funciona mejor en una etiqueta `<pre>` porque HubSpot elimina los espacios en blanco de manera predeterminada.

<CodeGroup>
  ```text hubl.txt theme={null}
  {% set wrap_text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam efficitur, ipsum non sagittis euismod, ex risus rhoncus lectus, vel maximus leo enim sit amet dui. Ut laoreet ultricies quam at fermentum." %}
  {{ wrap_text|wordwrap(10) }}
  ```

  ```text resultados renderizados.txt theme={null}
  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam efficitur, ipsum
  non sagittis euismod, ex risus rhoncus lectus, vel maximus leo enim sit amet
  dui. Ut laoreet ultricies quam at fermentum.
  ```
</CodeGroup>

| Parámetro         | Descripción                                   |
| ----------------- | --------------------------------------------- |
| `character_count` | Número de caracteres para cerar el contenido. |

## xmlattr

Crea una cadena de atributos HTML y XML, basada en los elementos de un dicc. Todos los valores que no sean nulos ni indefinidos se escapan automáticamente. Antepone un espacio al elemento si el filtro devuelve algún valor, a menos que el primer parámetro sea falso.

<CodeGroup>
  ```html example.html theme={null}
  {% set html_attributes = {"class": "bold", "id": "sidebar"} %}
  <div {{ html_attributes|xmlattr }}></div>
  ```

  ```html example.html theme={null}
  <div class="bold" id="sidebar"></div>
  ```
</CodeGroup>

| Parámetro   | Tipo     | Descripción                                                          |
| ----------- | -------- | -------------------------------------------------------------------- |
| `autospace` | Booleano | Establécelo como `true` para añadir un espacio delante del elemento. |
