function hook_page_build

You are here

7 system.api.php hook_page_build(&$page)
8 system.api.php hook_page_build(&$page)

Add elements to a page before it is rendered.

Use this hook when you want to add elements at the page level. For your additions to be printed, they have to be placed below a top level array key of the $page array that has the name of a region of the active theme.

By default, valid region keys are 'page_top', 'header', 'sidebar_first', 'content', 'sidebar_second' and 'page_bottom'. To get a list of all regions of the active theme, use system_region_list($theme). Note that $theme is a global variable.

If you want to alter the elements added by other modules or if your module depends on the elements of other modules, use hook_page_alter() instead which runs after this hook.

Parameters

$page: Nested array of renderable elements that make up the page.

See also

hook_page_alter()

drupal_render_page()

Related topics

4 functions implement hook_page_build()

Note: this list is generated by pattern matching, so it may include some functions that are not actually implementations of this hook.

block_page_build in modules/block/block.module
Implements hook_page_build().
dashboard_page_build in modules/dashboard/dashboard.module
Implements hook_page_build().
system_test_page_build in modules/simpletest/tests/system_test.module
Implements hook_page_build().
toolbar_page_build in modules/toolbar/toolbar.module
Implements hook_page_build().
1 invocation of hook_page_build()
drupal_render_page in includes/common.inc
Renders the page, including all theming.

File

modules/system/system.api.php, line 905
Hooks provided by Drupal core and the System module.

Code

function hook_page_build(&$page) {
  if (menu_get_object('node', 1)) {
    // We are on a node detail page. Append a standard disclaimer to the
    // content region.
    $page['content']['disclaimer'] = array(
      '#markup' => t('Acme, Inc. is not responsible for the contents of this sample code.'),
      '#weight' => 25,
    );
  }
}

Comments

For the weight to work for new content I had to set $page['theme_region']['#sorted'] to FALSE.

Example:

<?php
function hook_page_build(&$page) {
  if (
menu_get_object('node', 1)) {
   
   
$page['content']['#sorted'] = FALSE;

   

// We are on a node detail page. Append a standard disclaimer to the
    // content region.
   
$page['content']['disclaimer'] = array(
     
'#markup' => t('Acme, Inc. is not responsible for the contents of this sample code.'),
     
'#weight' => 25,
    );
  }
}
?>

If you have time maybe you could submit a patch to fix the example above.

system.api.php line 903