Je vois que les deux hook_preprocess_page()
et hook_preprocess_html()
sont des implémentations de hook_preprocess_HOOK()
, mais je ne comprends pas quand les utiliser.
hook_preprocess_page
est appelé en premier, mais cela ne m'aide pas vraiment à comprendre qui l'appelle.
En regardant la debug_print_backtrace()
sortie, elle est appelée theme()
, mais cela ne m'amène pas vraiment à la réponse.
Est-il simplement défini par le tableau transmis drupal_render()
?
template_preprocess_page()
est différent dehook_preprocess_page()
, et il existe une documentation pour hook_preprocess_HOOK , de la même manière que pour hook_process_HOOK .Réponses:
hook_preprocess_page
est le hook de prétraitement invoqué lorsque le fichier de modèle page.tpl.php est utilisé ethook_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.system_theme () définit ensuite le html comme suit.
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.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 quehook_form_FORM_ID_alter()
le nom du hook utilisé pour une classe de hooks d'altération.la source
hook_preprocess_page
ethook_preprocess_html
sont des crochets de couche de thème que vous pouvez utiliser pour ajouter des variables qui peuvent être utilisées dans vos modèles (page.tpl.php
&html.tpl.php
).hook_preprocess_hook
est le grand crochet de calque de thème que cette page et le format HTML utilisent, ainsi que ceux personnalisés que vous avez crééshook_theme()
.Par exemple, voici la déclaration de
hook_theme()
:et voici vos fonctions de prétraitement:
De plus
hook_preprocess()
vous permet de capturer plusieurs crochets à thème, et d' ajouter des variables aussi bienla source