hook_preprocess_page
est le hook de prétraitement invoqué lorsque le fichier de modèle page.tpl.php est utilisé et hook_preprocess_html
le hook de prétraitement invoqué lorsque le fichier de modèle html.tpl.php est utilisé.
Les deux crochets de prétraitement sont invoqués lorsqu'une page est rendue avec theme('page')
, car l'élément de page défini à partir de system_element_info () définit html comme wrapper de thème.
$types['page'] = array(
'#show_messages' => TRUE,
'#theme' => 'page',
'#theme_wrappers' => array('html'),
);
system_theme () définit ensuite le html comme suit.
'html' => array(
'render element' => 'page',
'template' => 'html',
),
Quant au moment de l'implémentation hook_preprocess_html()
, vous l'implémentez pour modifier les variables utilisées dans le fichier html.tpl.php, qui par défaut a le contenu suivant.
<!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>
Comme vous pouvez le voir, il contient uniquement les balises HTML qui enveloppent le contenu d'une page, disponibles dans $page
. Avec cela, vous pouvez modifier le contenu de la <head>
balise, le titre de la page (celui qui va dans la <title>
balise dans la <head>
balise), les styles CSS et les fichiers JavaScript ajoutés à une page, les classes et les attributs de la <body>
balise.
Le fichier de modèle page.tpl.php vous permet de modifier davantage la page en cours de rendu, notamment le nom du site, le slogan du site, le titre de la page et les flux associés à la page. Pour la plupart d'entre eux, il existe une fonction / hook Drupal spécifique que vous devriez utiliser à la place.
hook_preprocess_HOOK
est le nom générique du hook utilisé pour tous les hooks de prétraitement, de la même manière que hook_form_FORM_ID_alter()
le nom du hook utilisé pour une classe de hooks d'altération.