hook_preprocess_page
é o gancho de pré-processo chamado quando o arquivo de modelo page.tpl.php é usado e hook_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.
$types['page'] = array(
'#show_messages' => TRUE,
'#theme' => 'page',
'#theme_wrappers' => array('html'),
);
system_theme () define o html da seguinte maneira.
'html' => array(
'render element' => 'page',
'template' => 'html',
),
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.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php print $language->language; ?>" version="XHTML+RDFa 1.0" dir="<?php print $language->dir; ?>"<?php print $rdf_namespaces; ?>>
<head profile="<?php print $grddl_profile; ?>">
<?php print $head; ?>
<title><?php print $head_title; ?></title>
<?php print $styles; ?>
<?php print $scripts; ?>
</head>
<body class="<?php print $classes; ?>" <?php print $attributes;?>>
<div id="skip-link">
<a href="#main-content" class="element-invisible element-focusable"><?php print t('Skip to main content'); ?></a>
</div>
<?php print $page_top; ?>
<?php print $page; ?>
<?php print $page_bottom; ?>
</body>
</html>
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 que hook_form_FORM_ID_alter()
é o nome do gancho usado para uma classe de ganchos de alteração.