Melhores práticas do Twig - funções e templates de pré-processamento
Para fazer o tema do Drupal 8 o mais produtivo possível e oferecer mais oportunidades para a personalização da saída dos temas, o Drupal usa "funções de pré-processamento" e "funções de processamento".
Quando você define funções de pré-processamento Twig, você está adicionando novas variáveis que ficarão disponíveis no template.
Para definir uma função de pré-processamento Twig ou uma função de processamento, você precisa implementar o hook hook_preprocess() ou hook_process().
No seu arquivo .module, você pode ter algo assim:
/**
* Implements hook_preprocess_node().
*/
function my_module_preprocess_node(&$variables) {
$node = $variables['node'];
$variables['my_custom_var'] = $node->id();
}
Agora em seu template Twig, você pode usar {{ my_custom_var }}.
Se você quiser definir a função de pré-processamento para templates específicos (não todos os nós), você precisa dar um nome específico à sua função. O padrão é hook_preprocess_HOOK_NAME(). Por exemplo, se você quiser adicionar variáveis apenas para o template de nós que têm o tipo de conteúdo "article", sua função seria my_module_preprocess_node__article().
Pré-processamento: Adicionar variáveis ao template
Sempre que possível, coloque a lógica em seus templates Twig, não nas funções de pré-processamento. Isso torna seu código mais fácil de manter e entender. Se você absolutamente precisar de um pré-processador, use um.
Dicas de Performance
Para melhorar o desempenho do seu tema:
- Evite consultas ao banco de dados em funções de pré-processamento.
- Use caching sempre que possível.
- Evite adicionar muitas variáveis ao template se você não as usar.
- Coloque a lógica complexa em funções de pré-processamento apenas se for absolutamente necessário.