Eu não entendo completamente quando devo usar hook_page_alter (& $ page) ou template_preprocess_page (& $ vars, $ hook) no Drupal 7.
Quais são as melhores práticas para usar no template.php?
obrigado
A diferença é o seu propósito.
hook_page_build () e hook_page_alter () são usados para remover, alterar ou adicionar elementos no nível da página.
A matriz $ page transmitida para hook_page_alter()
contém os elementos de nível superior para cada região de bloco. Por padrão, eles são os seguintes:
Um exemplo de implementação pode ser o seguinte:
function mymodule_page_alter(&$page) {
// Add help text to the user login block.
$page['sidebar_first']['user_login']['help'] = array(
'#weight' => -10,
'#markup' => t('To post comments or add new content, you first have to log in.'),
);
}
As funções de pré-processo são chamadas para alterar as variáveis que são passadas para o arquivo de modelo. Eles não podem alterar a estrutura da página, mas podem alterar o conteúdo de alguns elementos da página, alterando o conteúdo dessas variáveis.
Por exemplo, o módulo Sobreposição remove as guias principais quando a página que está sendo visualizada é a sobreposição.
function overlay_preprocess_page(&$variables) {
if (overlay_get_mode() == 'child') {
unset($variables['tabs']['#primary']);
}
}