Vejo que tanto hook_preprocess_page()
e hook_preprocess_html()
são implementações de hook_preprocess_HOOK()
, mas eu não entendo quando usar cada.
hook_preprocess_page
é chamado primeiro, mas isso realmente não me ajuda a entender quem está chamando.
Olhando para a debug_print_backtrace()
saída, está sendo chamado theme()
, mas isso realmente não me leva à resposta.
É simplesmente definido pela matriz que é passada para drupal_render()
?
template_preprocess_page()
é diferentehook_preprocess_page()
e existe documentação para hook_preprocess_HOOK , da mesma forma que existe para hook_process_HOOK .Respostas:
hook_preprocess_page
é o gancho de pré-processo chamado quando o arquivo de modelo page.tpl.php é usado ehook_preprocess_html
é o gancho de pré-processo chamado quando o arquivo de modelo html.tpl.php é usado.Os ganchos de pré-processo são chamados quando uma página é renderizada
theme('page')
, pois o elemento da página definido em system_element_info () define html como wrapper de tema.system_theme () define o html da seguinte maneira.
Quanto a quando implementar
hook_preprocess_html()
, você o implementa para alterar as variáveis usadas no arquivo html.tpl.php, que por padrão possui o seguinte conteúdo.Como você pode ver, ele contém apenas as tags HTML que envolvem o conteúdo de uma página, disponíveis em
$page
. Com isso, você pode alterar o conteúdo da<head>
tag, o título da página (aquele que<title>
aparece na<head>
tag), os estilos CSS e os arquivos JavaScript adicionados a uma página, as classes e os atributos da<body>
tag.Com o arquivo de modelo page.tpl.php, você pode alterar mais a página que está sendo renderizada, incluindo o nome do site, o slogan do site, o título da página e os feeds associados à página. Para a maioria deles, existe uma função / gancho Drupal específica que você deve usar.
hook_preprocess_HOOK
é o nome genérico do gancho usado para todos os ganchos de pré-processamento, da mesma maneira quehook_form_FORM_ID_alter()
é o nome do gancho usado para uma classe de ganchos de alteração.fonte
hook_preprocess_page
ehook_preprocess_html
são ganchos da camada de tema que você pode usar para adicionar variáveis que podem ser usadas em seus modelos (page.tpl.php
&html.tpl.php
).hook_preprocess_hook
é o grande gancho da camada de tema que a página e o html usam e os personalizados que você criouhook_theme()
também.Por exemplo, aqui está a declaração de
hook_theme()
:e aqui estão suas funções de pré-processo:
Além disso,
hook_preprocess()
permite capturar vários ganchos de tema e adicionar variáveis tambémfonte