You are here

public function Registry::getBaseHook in Zircon Profile 8.0

Same name and namespace in other branches
  1. 8 core/lib/Drupal/Core/Theme/Registry.php \Drupal\Core\Theme\Registry::getBaseHook()

Returns the base hook for a given hook suggestion.

Parameters

string $hook: The name of a theme hook whose base hook to find.

Return value

string|false The name of the base hook or FALSE.

File

core/lib/Drupal/Core/Theme/Registry.php, line 260
Contains \Drupal\Core\Theme\Registry.

Class

Registry
Defines the theme registry service.

Namespace

Drupal\Core\Theme

Code

public function getBaseHook($hook) {
  $this
    ->init($this->themeName);
  $base_hook = $hook;

  // Iteratively strip everything after the last '__' delimiter, until a
  // base hook definition is found. Recursive base hooks of base hooks are
  // not supported, so the base hook must be an original implementation that
  // points to a theme function or template.
  while ($pos = strrpos($base_hook, '__')) {
    $base_hook = substr($base_hook, 0, $pos);
    if (isset($this->registry[$base_hook]['exists'])) {
      break;
    }
  }
  if ($pos !== FALSE && $base_hook !== $hook) {
    return $base_hook;
  }
  return FALSE;
}