hook_preprocess_page
es el enlace de preproceso invocado cuando se usa el archivo de plantilla page.tpl.php , y hook_preprocess_html
es el enlace de preproceso invocado cuando se usa el archivo de plantilla html.tpl.php .
Ambos ganchos de preproceso se invocan cuando se procesa una página theme('page')
, ya que el elemento de página definido desde system_element_info () define html como envoltorio de tema.
$types['page'] = array(
'#show_messages' => TRUE,
'#theme' => 'page',
'#theme_wrappers' => array('html'),
);
system_theme () luego define html de la siguiente manera.
'html' => array(
'render element' => 'page',
'template' => 'html',
),
En cuanto a cuándo implementar hook_preprocess_html()
, lo implementa para alterar las variables utilizadas en el archivo html.tpl.php, que por defecto tiene el siguiente contenido.
<!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 puede ver, contiene solo las etiquetas HTML que envuelven el contenido de una página, disponible en $page
. Con eso, puede cambiar el contenido de la <head>
etiqueta, el título de la página (el que va en la <title>
etiqueta en la <head>
etiqueta), los estilos CSS y los archivos JavaScript agregados a una página, las clases y los atributos de la <body>
etiqueta.
Con el archivo de plantilla page.tpl.php, puede cambiar más de la página que se representa, incluido el nombre del sitio, el eslogan del sitio, el título de la página y los feeds asociados a la página. Para la mayoría de ellos, hay una función / gancho específico de Drupal que deberías usar.
hook_preprocess_HOOK
es el nombre de gancho genérico utilizado para todos los ganchos de preproceso, del mismo modo hook_form_FORM_ID_alter()
es el nombre de gancho utilizado para una clase de ganchos de alteración.