Última modificação: 28 de agosto de 2025
O HubL utiliza variáveis para armazenar e produzir valores para o modelo. As variáveis podem ser usadas na lógica do modelo ou iteradas em loops. Além das variáveis, as macros são outra ferramenta útil para imprimir seções de código repetitivas, mas dinâmicas nos seus modelos.
Variáveis são expressões delimitadas por }}
. A sintaxe básica das variáveis é a seguinte:
Variáveis
As variáveis são uma palavra em uma expressão ou um atributo de um dicionário. O HubL usa estruturas de dados baseadas em Python chamadas dicionários ou dicts para armazenar vários conjuntos de variáveis. Por exemplo, o HubSpot usa um “content” de dicionário para abrigar muitos atributos que pertencem ao conteúdo criado com esse modelo. Por exemplo,content.absolute_url
imprime a URL da parte específica do conteúdo.
O HubSpot tem muitas variáveis predefinidas que podem ser usadas em toda a sua página, blog e modelos de e-mail. Temos uma lista de referência de variáveis, você também pode ver as informações do desenvolvedor ao navegar em qualquer página da sua conta para ver as variáveis disponíveis dentro dessa página.
Além de imprimir os valores de variáveis e atributos de dicionário em um modelo, você também pode definir suas próprias variáveis. Você pode armazenar strings, booleanos, inteiros, sequências ou criar dicionários dentro de uma única variável. As variáveis são definidas dentro de delimitadores de instrução usando a palavra “set”. Uma vez armazenadas, as variáveis podem então ser impressas declarando o nome da variável como uma expressão. Abaixo você pode ver vários tipos de informações armazenadas em variáveis e depois impressas.
As variáveis devem ser palavras únicas ou usar sublinhados no lugar de espaços (ou seja, my_variable). O HubL não suporta nomes de variáveis separadas por hifens.
Macros
As macros do HubL permitem imprimir vários comandos com um valor dinâmico. Por exemplo, se houver um bloco de código que você sempre escreve, uma macro poderá ser uma boa solução, pois ela escreverá o bloco de código trocando alguns argumentos determinados por você. A macro é definida, nomeada e recebe argumentos dentro de uma instrução do HubL. A macro é então chamada em uma instrução que passa seus valores dinâmicos, e o bloco de código final é impresso com os argumentos dinâmicos. A sintaxe básica de uma macro é a seguinte:-
) no início ou no fim de um bloco, comentário ou expressão de variável, os espaços em branco antes ou depois desse bloco serão removidos.
As macros permitem ter um código recursivo. Para evitar problemas de confiabilidade e desempenho, você apenas pode aninhar macros com 20 níveis de profundidade. Se ultrapassar este limite, obterá o erro:
max recursion limit of 20 reached for macro <your macro name>
Call
Em alguns casos, você pode querer retornar informações dinâmicas adicionais para o bloco da macro. Por exemplo, você pode ter uma grande porção de código para retornar à macro, além dos argumentos. Você pode fazer isso usando o bloco de chamadas e chamador(). Um bloco de chamada funciona basicamente como uma macro, mas não recebe seu próprio nome. A expressão caller() especifica onde o conteúdo do bloco de chamada renderizará. No exemplo abaixo, um<p>
é adicionado em uma macro, além dos dois argumentos.
Import
Outra característica útil das macros é que elas podem ser usadas nos modelos. Basta importar um arquivo de modelo em outro. Para fazer isso, você precisará usar a tag import. A tag import permitirá especificar um caminho de arquivo do Gerenciador de design para o modelo que contém suas macros e dar um nome às macros no modelo em que você as está incluindo. Você pode passar valores para essas macros sem precisar redefini-los. Por exemplo, suponha que você tenha um arquivo de modelo .html com as duas macros a seguir. Uma macro define uma tag header e a outra gera uma tag footer. Este arquivo é salvo no Gerenciador de design com o nomemy_macros.html
.
my_macros.html
. Ela também nomeia o grupo de macros (neste exemplo header_footer
). As macros podem então ser executadas anexando o nome da macro ao nome dado ao modelo importado. Veja o exemplo abaixo.
From
Se você quiser importar apenas macros específicas, ao invés de todas as macros contidas em um arquivo .html separado, use a tag from. Com a tag from, especifique apenas as macros que você quer importar. Geralmente, a utilização de import irá proporcionar maior flexibilidade, mas esta alternativa também é suportada. O exemplo abaixo acessa o mesmo arquivomy_macros.html
da seção anterior deste artigo. Porém, em vez de importar todas as macros, ele acessa apenas a macro footer.
Variáveis dentro de loops
Quaisquer variáveis definidas dentro de loops são limitadas ao escopo desse loop e não podem ser chamadas de fora do loop.
.update
: