Same name and namespace in other branches
  1. 4.7.x modules/system.module \system_region_list()
  2. 6.x modules/system/system.module \system_region_list()
  3. 7.x modules/system/system.module \system_region_list()
  4. 8.9.x core/modules/system/system.module \system_region_list()
  5. 9 core/modules/system/system.module \system_region_list()

Get a list of available regions from a specified theme.

Parameters

$theme_key: The name of a theme.

Return value

An array of regions in the form $region['name'] = 'description'.

5 calls to system_region_list()
block_admin_display in modules/block/block.module
Generate main block administration form.
phptemplate_page in themes/engines/phptemplate/phptemplate.engine
Prepare the values passed to the theme_page function to be passed into a pluggable template engine. Uses the arg() function to generate a series of page template files suggestions based on the current path. If none are found, the default page.tpl.php…
system_default_region in modules/system/system.module
Get the name of the default region for a given theme.
system_initialize_theme_blocks in modules/system/system.module
Assign an initial, default set of blocks for a theme.
theme_block_admin_display in modules/block/block.module
Theme main block administration form submission.

File

modules/system/system.module, line 996
Configuration system that lets administrators modify the workings of the site.

Code

function system_region_list($theme_key) {
  static $list = array();
  if (!array_key_exists($theme_key, $list)) {
    $theme = db_fetch_object(db_query("SELECT * FROM {system} WHERE type = 'theme' AND name = '%s'", $theme_key));

    // Stylesheets can't have regions; use its theme.
    if (strpos($theme->filename, '.css')) {
      return system_region_list(basename(dirname($theme->description)));
    }

    // If this is a custom theme, load it in before moving on.
    if (file_exists($file = dirname($theme->filename) . '/' . $theme_key . '.theme')) {
      include_once "./{$file}";
    }
    $regions = array();

    // This theme has defined its own regions.
    if (function_exists($theme_key . '_regions')) {
      $regions = call_user_func($theme_key . '_regions');
    }
    else {
      if (strpos($theme->description, '.engine')) {
        include_once './' . $theme->description;
        $theme_engine = basename($theme->description, '.engine');
        $regions = function_exists($theme_engine . '_regions') ? call_user_func($theme_engine . '_regions') : array();
      }
    }
    $list[$theme_key] = $regions;
  }
  return $list[$theme_key];
}