hook_preprocess_pagejest hakiem wstępnego wywołania, gdy używany jest plik szablonu page.tpl.php , i hook_preprocess_htmljest hakiem wstępnego wywołania, gdy używany jest plik szablonu html.tpl.php .
Oba przechwytywania procesu wstępnego są wywoływane podczas renderowania strony theme('page'), ponieważ element strony zdefiniowany w systemie_element_info () definiuje HTML jako opakowanie motywu.
$types['page'] = array(
'#show_messages' => TRUE,
'#theme' => 'page',
'#theme_wrappers' => array('html'),
);
system_theme () następnie definiuje HTML w następujący sposób.
'html' => array(
'render element' => 'page',
'template' => 'html',
),
Jeśli chodzi o czas implementacji hook_preprocess_html(), to implementujesz go, aby zmienić zmienne używane w pliku html.tpl.php, który domyślnie ma następującą zawartość.
<!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>
Jak widać, zawiera tylko tagi HTML, które zawijają zawartość strony, dostępne w $page. Dzięki temu możesz zmienić zawartość <head>znacznika, tytuł strony (ten, który znajduje się w <title>znaczniku w <head>znaczniku), style CSS i pliki JavaScript dodane do strony, klasy i atrybuty <body>znacznika.
Za pomocą pliku szablonu page.tpl.php możesz zmienić więcej renderowanej strony, w tym nazwę witryny, hasło witryny, tytuł strony i kanały powiązane ze stroną. Dla większości z nich istnieje specyficzna funkcja / haczyk Drupala, którego powinieneś użyć zamiast tego.
hook_preprocess_HOOKto ogólna nazwa haka używana dla wszystkich haków wstępnego przetwarzania, w taki sam sposób hook_form_FORM_ID_alter()jak nazwa haka używana dla klasy haków modyfikacji.