function drupal_theme_initialize

Initializes the theme system by loading the theme.

15 calls to drupal_theme_initialize()
batch_process in includes/form.inc
Processes the batch.
block_admin_display in modules/block/block.admin.inc
Menu callback for admin/structure/block.
block_page_build in modules/block/block.module
Implements hook_page_build().
dashboard_admin_blocks in modules/dashboard/dashboard.module
Page callback: Builds the page for administering dashboard blocks.
dashboard_enable in modules/dashboard/dashboard.install
Implements hook_enable().

... See full list

File

includes/theme.inc, line 70

Code

function drupal_theme_initialize() {
    global $theme, $user, $theme_key;
    // If $theme is already set, assume the others are set, too, and do nothing
    if (isset($theme)) {
        return;
    }
    drupal_bootstrap(DRUPAL_BOOTSTRAP_DATABASE);
    $themes = list_themes();
    // Only select the user selected theme if it is available in the
    // list of themes that can be accessed.
    $theme = !empty($user->theme) && drupal_theme_access($user->theme) ? $user->theme : variable_get('theme_default', 'bartik');
    // Allow modules to override the theme. Validation has already been performed
    // inside menu_get_custom_theme(), so we do not need to check it again here.
    $custom_theme = menu_get_custom_theme();
    $theme = !empty($custom_theme) ? $custom_theme : $theme;
    // Store the identifier for retrieving theme settings with.
    $theme_key = $theme;
    // Find all our ancestor themes and put them in an array.
    $base_theme = array();
    $ancestor = $theme;
    while ($ancestor && isset($themes[$ancestor]->base_theme)) {
        $ancestor = $themes[$ancestor]->base_theme;
        $base_theme[] = $themes[$ancestor];
    }
    _drupal_theme_initialize($themes[$theme], array_reverse($base_theme));
    // Themes can have alter functions, so reset the drupal_alter() cache.
    drupal_static_reset('drupal_alter');
    // Provide the page with information about the theme that's used, so that a
    // later Ajax request can be rendered using the same theme.
    // @see ajax_base_page_theme()
    $setting['ajaxPageState'] = array(
        'theme' => $theme_key,
        'theme_token' => drupal_get_token($theme_key),
    );
    drupal_add_js($setting, 'setting');
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.