Um guia prático para as instruções if do HubL da HubSpot para programadores de CMS.
if
, uma vez que os modelos são compilados antes de as informações serem preenchidas.if
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.
if
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.”
unless
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
. 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.
if
em linha. Estas podem ser utilizadas para escrever lógica condicional de forma concisa com operadores e testes de expressão.