Same name and namespace in other branches
  1. 10 core/includes/theme.inc \template_preprocess_maintenance_page()
  2. 7.x includes/theme.inc \template_preprocess_maintenance_page()
  3. 8.9.x core/includes/theme.inc \template_preprocess_maintenance_page()
  4. 9 core/includes/theme.inc \template_preprocess_maintenance_page()

The variables generated here is a mirror of template_preprocess_page(). This preprocessor will run it's course when theme_maintenance_page() is invoked. It is also used in theme_install_page() and theme_update_page() to keep all the variables consistent.

An alternate template file of "maintenance-page-offline.tpl.php" can be used when the database is offline to hide errors and completely replace the content.

The $variables array contains the following arguments:

  • $content
  • $show_blocks

See also

maintenance-page.tpl.php

2 calls to template_preprocess_maintenance_page()
theme_install_page in includes/theme.maintenance.inc
Generate a themed installation page.
theme_update_page in includes/theme.maintenance.inc
Generate a themed update page.

File

includes/theme.maintenance.inc, line 207
Theming for maintenance pages.

Code

function template_preprocess_maintenance_page(&$variables) {

  // Add favicon
  if (theme_get_setting('toggle_favicon')) {
    drupal_set_html_head('<link rel="shortcut icon" href="' . check_url(theme_get_setting('favicon')) . '" type="image/x-icon" />');
  }
  global $theme;

  // Retrieve the theme data to list all available regions.
  $theme_data = _system_theme_data();
  $regions = $theme_data[$theme]->info['regions'];

  // Get all region content set with drupal_set_content().
  foreach (array_keys($regions) as $region) {

    // Assign region to a region variable.
    $region_content = drupal_get_content($region);
    isset($variables[$region]) ? $variables[$region] .= $region_content : ($variables[$region] = $region_content);
  }

  // Setup layout variable.
  $variables['layout'] = 'none';
  if (!empty($variables['left'])) {
    $variables['layout'] = 'left';
  }
  if (!empty($variables['right'])) {
    $variables['layout'] = $variables['layout'] == 'left' ? 'both' : 'right';
  }

  // Construct page title
  if (drupal_get_title()) {
    $head_title = array(
      strip_tags(drupal_get_title()),
      variable_get('site_name', 'Drupal'),
    );
  }
  else {
    $head_title = array(
      variable_get('site_name', 'Drupal'),
    );
    if (variable_get('site_slogan', '')) {
      $head_title[] = variable_get('site_slogan', '');
    }
  }
  $variables['head_title'] = implode(' | ', $head_title);
  $variables['base_path'] = base_path();
  $variables['breadcrumb'] = '';
  $variables['feed_icons'] = '';
  $variables['footer_message'] = filter_xss_admin(variable_get('site_footer', FALSE));
  $variables['head'] = drupal_get_html_head();
  $variables['help'] = '';
  $variables['language'] = $GLOBALS['language'];
  $variables['language']->dir = $GLOBALS['language']->direction ? 'rtl' : 'ltr';
  $variables['logo'] = theme_get_setting('logo');
  $variables['messages'] = $variables['show_messages'] ? theme('status_messages') : '';
  $variables['mission'] = '';
  $variables['primary_links'] = array();
  $variables['secondary_links'] = array();
  $variables['search_box'] = '';
  $variables['site_name'] = theme_get_setting('toggle_name') ? variable_get('site_name', 'Drupal') : '';
  $variables['site_slogan'] = theme_get_setting('toggle_slogan') ? variable_get('site_slogan', '') : '';
  $variables['css'] = drupal_add_css();
  $variables['styles'] = drupal_get_css();
  $variables['scripts'] = drupal_get_js();
  $variables['tabs'] = '';
  $variables['title'] = drupal_get_title();
  $variables['closure'] = '';

  // Compile a list of classes that are going to be applied to the body element.
  $body_classes = array();
  $body_classes[] = 'in-maintenance';
  if (isset($variables['db_is_active']) && !$variables['db_is_active']) {
    $body_classes[] = 'db-offline';
  }
  if ($variables['layout'] == 'both') {
    $body_classes[] = 'two-sidebars';
  }
  elseif ($variables['layout'] == 'none') {
    $body_classes[] = 'no-sidebars';
  }
  else {
    $body_classes[] = 'one-sidebar sidebar-' . $variables['layout'];
  }
  $variables['body_classes'] = implode(' ', $body_classes);

  // Dead databases will show error messages so supplying this template will
  // allow themers to override the page and the content completely.
  if (isset($variables['db_is_active']) && !$variables['db_is_active']) {
    $variables['template_file'] = 'maintenance-page-offline';
  }
}