Sentencias If
Puedes incluir lógica condicional en tus módulos y plantillas utilizando lassentencias if y sentencias unless de HubL. Las sentencias If suelen contener operadores compatibles con HubL y pueden utilizarse para ejecutar pruebas de expresión.
Nota: si utilizas tokens de personalización dentro de una sentencia condicional de tu módulo de correo electrónico, debes activar el correo electrónico programable para el módulo.
La información pasada a través de la API de correo electrónico transaccional no funcionará dentro de las sentencias if
, ya que las plantillas se compilan antes de que la información se rellene.
HubL utiliza sentencias if para ayudar a definir la lógica de una plantilla. La sintaxis de las sentencias if de HubL es muy similar a la lógica condicional de Python. Las sentencias if
están envueltas en delimitadores de sentencias, comenzando con una sentencia if
de apertura y terminando con un endif
.
El ejemplo siguiente proporciona la sintaxis básica de una sentencia if, en la que "condición" se sustituiría por la regla booleana que ibas a evaluar como verdadera o falsa.
Ahora que has visto la sintaxis básica, veamos algunos ejemplos reales de sentencias if básicas. Los siguientes ejemplos muestran sentencias if que comprueban si un módulo HubL con el nombre my_module
y si una variable llamada my_module
están presentes en una plantilla. Observa que sin ningún operador, la sentencia if evaluará si el módulo está definido o no en el contexto de la plantilla.
Observa que al evaluar el módulo HubL, el nombre del módulo se deja entre comillas dentro de la sentencia if
y al probar la variable no se utilizan comillas alrededor del nombre de la variable. En los dos ejemplos anteriores, el módulo y la variable existen en la plantilla, por lo que las sentencias se evalúan para imprimir la marca. Ten en cuenta que estos ejemplos solo prueban si el módulo y la variable están definidos, no si tienen o no un valor.
Ahora veamos una sentencia if
que evalúa si un módulo tiene un valor, en lugar de evaluar si existe en la plantilla. Para ello, debemos utilizar el parámetro export_to_template_context . En el ejemplo siguiente, si se valora el módulo de texto en el editor de contenidos, se imprimiría la marca. Si el campo de texto del módulo estuviera vacío, no se mostraría ninguna marca. Si estás trabajando con módulos personalizados, existe una sintaxis simplificada de widget.widget_name
que se describe en elejemplo aquí.
Las sentencias if
pueden hacerse más sofisticadas con sentencias condicionales adicionales o con una regla que se ejecuta cuando la condición o las condiciones son falsas. Las sentencias elif
te permiten agregar condiciones adicionales a tu lógica que se evaluarán después de la condición anterior. Las sentencias else
definen una regla que se ejecuta cuando todas las demás condiciones son falsas. Puedes tener un número ilimitado de sentencias elif
dentro de una sola sentencia if, pero solo una sentencia else
.
A continuación se muestra el ejemplo de sintaxis básica de la sentencia if que utiliza el operador <= para comprobar el valor de una variable. En este ejemplo, la plantilla se imprimiría: "El número con nombre de la variable es menor que o igual a 6."
A continuación se muestra otro ejemplo que utiliza un módulo de elección para mostrar diferentes encabezados para una página de carreras, en función del departamento elegido por el usuario. El ejemplo utiliza el operador ==, para comprobar ciertos valores predefinidos en el módulo de elección.
Las sentencias unless
son condicionales al igual que las sentencias if
, pero funcionan con la lógica inversa. Se renderizará y compilará el código entre las etiquetas de apertura y cierre, a menos que la condición booleana única se evalúe como verdadera. Las sentencias unless comienzan con un unless
y terminan con un endunless
. Las sentencias unless
admiten else
pero no elif
.
A continuación se muestra un ejemplo que imprime un encabezado "En construcción", a menos que se valore el campo de texto enriquecido. Si el campo de texto enriquecido tiene contenido, entonces ese contenido se mostrará.
ifchanged
. Estas sentencias pueden utilizarse para que solo se muestre la marca cuando una variable ha cambiado desde una invocación anterior de esta etiqueta.if
en línea. Se pueden utilizar para escribir lógica condicional de forma concisa con operadores y pruebas de expresión.Gracias por tus comentarios, son muy importantes para nosotros.