hook_preprocess_page
wird der Vorverarbeitungs-Hook aufgerufen, wenn die Vorlagendatei page.tpl.php verwendet wird, und hook_preprocess_html
wird der Vorverarbeitungs-Hook aufgerufen, wenn die Vorlagendatei html.tpl.php verwendet wird.
Beide Preprocess-Hooks werden aufgerufen, wenn eine Seite mit gerendert wird theme('page')
, da das von system_element_info () definierte Seitenelement html als Theme-Wrapper definiert.
$types['page'] = array(
'#show_messages' => TRUE,
'#theme' => 'page',
'#theme_wrappers' => array('html'),
);
system_theme () definiert dann HTML wie folgt.
'html' => array(
'render element' => 'page',
'template' => 'html',
),
Wenn hook_preprocess_html()
Sie implementieren möchten, müssen Sie es implementieren, um die in der Datei html.tpl.php verwendeten Variablen zu ändern, die standardmäßig den folgenden Inhalt hat.
<!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>
Wie Sie sehen, enthält es nur die HTML-Tags, die den Inhalt einer Seite umschließen, die in verfügbar sind $page
. Damit können Sie den Inhalt des <head>
Tags, den Seitentitel (derjenige, der in das <title>
Tag im <head>
Tag eingefügt wird), die CSS-Stile und die einer Seite hinzugefügten JavaScript-Dateien, die Klassen und die Attribute für das <body>
Tag ändern.
Mit der Vorlagendatei page.tpl.php können Sie einen größeren Teil der gerenderten Seite ändern, einschließlich des Site-Namens, des Site-Slogans, des Seitentitels und der mit der Seite verknüpften Feeds. Für die meisten von ihnen gibt es eine spezielle Drupal-Funktion / einen speziellen Hook, den Sie stattdessen verwenden sollten.
hook_preprocess_HOOK
ist der generische Hook-Name, der für alle Vorverarbeitungs-Hooks verwendet wird, ebenso wie hook_form_FORM_ID_alter()
der Hook-Name, der für eine Klasse von Änderungs-Hooks verwendet wird.