hook_preprocess_page
è l'hook di pre-elaborazione invocato quando si utilizza il file modello page.tpl.php ed hook_preprocess_html
è l'hook di pre-elaborazione richiamato quando si utilizza il file modello html.tpl.php .
Entrambi gli hook di preelaborazione vengono richiamati quando viene eseguito il rendering di una pagina theme('page')
, poiché l'elemento di pagina definito da system_element_info () definisce HTML come wrapper di temi.
$types['page'] = array(
'#show_messages' => TRUE,
'#theme' => 'page',
'#theme_wrappers' => array('html'),
);
system_theme () quindi definisce html come segue.
'html' => array(
'render element' => 'page',
'template' => 'html',
),
Per quanto riguarda quando implementarlo hook_preprocess_html()
, lo si implementa per alterare le variabili utilizzate nel file html.tpl.php, che per impostazione predefinita ha il seguente contenuto.
<!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>
Come puoi vedere, contiene solo i tag HTML che racchiudono il contenuto di una pagina, disponibile in $page
. Con ciò, puoi cambiare il contenuto del <head>
tag, il titolo della pagina (quello che si trova nel <title>
tag nel <head>
tag), gli stili CSS e i file JavaScript aggiunti a una pagina, le classi e gli attributi per il <body>
tag.
Con il file modello page.tpl.php, puoi modificare una parte maggiore della pagina visualizzata, inclusi il nome del sito, lo slogan del sito, il titolo della pagina e i feed associati alla pagina. Per la maggior parte di essi, esiste invece una funzione / hook Drupal specifica che dovresti invece usare.
hook_preprocess_HOOK
è il nome di hook generico utilizzato per tutti gli hook di preelaborazione, allo stesso modo hook_form_FORM_ID_alter()
è il nome di hook utilizzato per una classe di hook di modifica.