function ThemeSettingsProvider::getSetting

File

core/lib/Drupal/Core/Extension/ThemeSettingsProvider.php, line 51

Class

ThemeSettingsProvider
Default implementation of the theme settings provider service.

Namespace

Drupal\Core\Extension

Code

public function getSetting(string $setting_name, ?string $theme = NULL) : mixed {
  // If no key is given, use the current theme if we can determine it.
  if (!isset($theme)) {
    $theme = $this->themeManager
      ->getActiveTheme()
      ->getName();
  }
  $cid = 'theme_settings:' . $theme;
  $cacheItem = $this->memoryCache
    ->get($cid);
  if ($cacheItem) {
    /** @var \Drupal\Core\Theme\ThemeSettings $themeSettings */
    $themeSettings = $cacheItem->data;
  }
  else {
    $themeSettings = $this->buildThemeSettings($theme);
    $this->memoryCache
      ->set($cid, $themeSettings, tags: [
      'config:core.extension',
      'config:system.theme.global',
      sprintf('config:%s.settings', $theme),
    ]);
  }
  return $themeSettings->get($setting_name);
}

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