function drupal_render_page

Renders the page, including all theming.

Parameters

$page: A string or array representing the content of a page. The array consists of the following keys:

  • #type: Value is always 'page'. This pushes the theming through the page template (required).
  • #show_messages: Suppress drupal_get_message() items. Used by Batch API (optional).

See also

hook_page_alter()

element_info()

7 calls to drupal_render_page()
ExceptionController::on403Html in drupal/core/lib/Drupal/Core/Controller/ExceptionController.php
Processes an AccessDenied exception into an HTTP 403 response.
ExceptionController::on404Html in drupal/core/lib/Drupal/Core/Controller/ExceptionController.php
Processes a NotFound exception into an HTTP 404 response.
HtmlPageController::content in drupal/core/lib/Drupal/Core/Controller/HtmlPageController.php
Controller method for generic HTML pages.
overlay_render_region in drupal/core/modules/overlay/overlay.module
Renders an individual page region.
Page::execute in drupal/core/modules/views/lib/Drupal/views/Plugin/views/display/Page.php
Overrides \Drupal\views\Plugin\views\display\PathPluginBase::execute().

... See full list

File

drupal/core/includes/common.inc, line 4611
Common functions that many Drupal modules will need to reference.

Code

function drupal_render_page($page) {
  $main_content_display =& drupal_static('system_main_content_added', FALSE);

  // Allow menu callbacks to return strings or arbitrary arrays to render.
  // If the array returned is not of #type page directly, we need to fill
  // in the page with defaults.
  if (is_string($page) || is_array($page) && (!isset($page['#type']) || $page['#type'] != 'page')) {
    drupal_set_page_content($page);
    $page = element_info('page');
  }

  // Modules can add elements to $page as needed in hook_page_build().
  foreach (module_implements('page_build') as $module) {
    $function = $module . '_page_build';
    $function($page);
  }

  // Modules alter the $page as needed. Blocks are populated into regions like
  // 'sidebar_first', 'footer', etc.
  drupal_alter('page', $page);

  // If no module has taken care of the main content, add it to the page now.
  // This allows the site to still be usable even if no modules that
  // control page regions (for example, the Block module) are enabled.
  if (!$main_content_display) {
    $page['content']['system_main'] = drupal_set_page_content();
  }
  return drupal_render($page);
}