Última modificação: 28 de agosto de 2025
Você pode incluir lógica condicional nos seus módulos e modelos utilizando instruções if e unless do HubL. As instruções If geralmente contêm operadores compatíveis com HubL e podem ser utilizadas para executar testes de expressão.
Observe: se estiver utilizando tokens de personalização dentro de uma instrução condicional do seu módulo de e-mail, você terá que ativar o e-mail programável para o módulo.As informações transmitidas por meio das APIs v3 ou v4 de envio único não funcionarão nas instruções
if
, uma vez que os modelos são compilados antes de as informações serem preenchidas.Sintaxe básica da instrução if
O HubL utiliza instruções if para ajudar a definir a lógica de um modelo. A sintaxe das instruções if do HubL é muito semelhante à lógica condicional em Python. As instruçõesif
são envolvidas por delimitadores, começando com uma instrução if
de abertura e terminando com uma instrução endif
.
O exemplo abaixo fornece a sintaxe básica de uma instrução if, em que a “condição” seria substituída pela regra booleana que você avaliaria como verdadeira ou falsa.
my_module
e se uma variável com o nome my_module
estão presentes em um modelo. Observe que, sem operadores, a instrução if avalia se o módulo está ou não definido no contexto do modelo.
if
e, ao testar a variável, não são utilizadas aspas no nome da variável. Em ambos os exemplos acima, o módulo e a variável existem no modelo; portanto, as instruções são avaliadas para imprimir a marcação. Observe que estes exemplos estão apenas testando se o módulo e a variável estão definidos, e não se eles contêm um valor.
Vejamos agora uma instrução if
que avalia se um módulo tem um valor, em vez de avaliar se ele existe no modelo. Para fazer isso, é necessário utilizar o parâmetro export_to_template_context. No exemplo abaixo, se o módulo de rich text contivesse um valor no editor de conteúdo, a marcação seria impressa. Se o campo de texto do módulo de rich text fosse desativado, nenhuma marcação seria exibida. Se estiver trabalhando com módulos personalizados, existe uma sintaxe simplificada, widget.widget_name
, descrita neste exemplo.
Usar elif e else
As instruçõesif
podem ser sofisticadas com instruções condicionais adicionais ou com uma regra que é executada quando a condição ou condições são falsas. A instrução elif
permite adicionar condições à sua lógica que serão avaliadas depois da condição anterior. A instrução else
define uma regra que é executada quando todas as outras condições são falsas. Você pode ter um número ilimitado de instruções elif
dentro de uma instrução if, mas apenas uma instrução else
.
Veja abaixo um exemplo de sintaxe básica da instrução if que usa o operador <= para verificar o valor de uma variável. Neste exemplo, o modelo imprimiria: “A variável chamada number é menor ou igual a 6.”
Instruções Unless
As instruçõesunless
são condicionais, assim como as instruções if
, mas funcionam com a lógica inversa. Elas processam e compilam o código entre as tags de abertura e fechamento, a menos que a condição booleana única seja avaliada como verdadeira. As instruções unless começam com**unless
** e terminam com endunless
. As instruções unless
dão suporte a else
mas não a elif
.
Veja abaixo um exemplo que imprime um cabeçalho “Em construção”, a menos que o campo de rich text tenha um valor. Se o campo de rich text tiver conteúdo, esse conteúdo será mostrado.
ifchanged
Além das instruções if e unless, o HubL dá suporte a instruçõesifchanged
. Estas instruções podem ser utilizadas para mostrar apenas a marcação quando uma variável tiver sido alterada desde uma invocação anterior desta tag.
Instruções if em linha
O HubL dá suporte a instruçõesif
em linha. Estas podem ser utilizadas para escrever lógica condicional de forma concisa com operadores e testes de expressão.