Answers:
区别在于他们的目的。
hook_page_build()和hook_page_alter()用于在页面级别删除,更改或添加元素。
传递给的$ page数组hook_page_alter()
包含每个块区域的顶级元素。默认情况下,它们是:
以下是一个实现示例:
function mymodule_page_alter(&$page) {
// Add help text to the user login block.
$page['sidebar_first']['user_login']['help'] = array(
'#weight' => -10,
'#markup' => t('To post comments or add new content, you first have to log in.'),
);
}
调用预处理功能以更改传递到模板文件的变量。它们不能更改页面的结构,但是可以更改页面某些元素的内容,从而更改这些变量的内容。
例如,当要可视化的页面为叠加层时,叠加模块将删除主要标签。
function overlay_preprocess_page(&$variables) {
if (overlay_get_mode() == 'child') {
unset($variables['tabs']['#primary']);
}
}