回答:
違いは彼らの目的です。
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.'),
);
}
前処理関数は、テンプレートファイルに渡される変数を変更するために呼び出されます。ページの構造を変更することはできませんが、ページの一部の要素のコンテンツを変更して、それらの変数のコンテンツを変更することができます。
たとえば、視覚化されているページがオーバーレイの場合、Overlayモジュールは主タブを削除します。
function overlay_preprocess_page(&$variables) {
if (overlay_get_mode() == 'child') {
unset($variables['tabs']['#primary']);
}
}