hook_preprocess_page
là hook tiền xử lý được gọi khi tệp mẫu page.tpl.php được sử dụng và hook_preprocess_html
là hook tiền xử lý được gọi khi tệp mẫu html.tpl.php được sử dụng.
Cả hai móc tiền xử lý được gọi khi một trang được kết xuất theme('page')
, vì phần tử trang được xác định từ system_element_info () định nghĩa html là trình bao bọc chủ đề.
$types['page'] = array(
'#show_messages' => TRUE,
'#theme' => 'page',
'#theme_wrappers' => array('html'),
);
system_theme () sau đó định nghĩa html như sau.
'html' => array(
'render element' => 'page',
'template' => 'html',
),
Khi thực hiện hook_preprocess_html()
, bạn triển khai nó để thay đổi các biến được sử dụng trong tệp html.tpl.php, theo mặc định có nội dung sau.
<!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>
Như bạn có thể thấy, nó chỉ chứa các thẻ HTML bao bọc một nội dung trang, có sẵn trong $page
. Cùng với đó, bạn có thể thay đổi nội dung của <head>
thẻ, tiêu đề trang (tiêu đề trong <title>
thẻ trong <head>
thẻ), kiểu CSS và tệp JavaScript được thêm vào một trang, các lớp và thuộc tính cho <body>
thẻ.
Với tệp mẫu page.tpl.php, bạn có thể thay đổi nhiều trang đang được hiển thị, bao gồm tên trang web, khẩu hiệu trang web, tiêu đề trang và nguồn cấp dữ liệu được liên kết với trang. Đối với hầu hết trong số họ, có một chức năng / móc Drupal cụ thể mà bạn nên sử dụng.
hook_preprocess_HOOK
là tên hook chung được sử dụng cho tất cả các hook tiền xử lý, theo cùng một cách hook_form_FORM_ID_alter()
là tên hook được sử dụng cho một lớp hook thay đổi.