質問: hook_page_alterとpreprocess_pageの違いは? drupal 7。template.phpで使用するためのベストプラクティスは何ですか?ありがとう
回答: 違いは彼らの目的です。 hook_page_build() および hook_page_alter() は、ページレベルで要素を削除、変更、または追加するために使用されます。 hook_page_alter()に渡される$ page配列には、各ブロック領域の最上位要素が含まれています。デフォルトでは、次のとおりです。 page_top ヘッダ sidebar_first コンテンツ sidebar_second page_bottom 実装の例は次のようになります。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']); } }