protected LibraryDiscoveryParser::applyLibrariesOverride($libraries, $extension)
Apply libraries overrides specified for the current active theme.
array $libraries: The libraries definitions.
string $extension: The extension in which these libraries are defined.
array The modified libraries definitions.
protected function applyLibrariesOverride($libraries, $extension) { $active_theme = $this->themeManager->getActiveTheme(); // ActiveTheme::getLibrariesOverride() returns libraries-overrides for the // current theme as well as all its base themes. $all_libraries_overrides = $active_theme->getLibrariesOverride(); foreach ($all_libraries_overrides as $theme_path => $libraries_overrides) { foreach ($libraries as $library_name => $library) { // Process libraries overrides. if (isset($libraries_overrides["$extension/$library_name"])) { // Active theme defines an override for this library. $override_definition = $libraries_overrides["$extension/$library_name"]; if (is_string($override_definition) || $override_definition === FALSE) { // A string or boolean definition implies an override (or removal) // for the whole library. Use the override key to specify that this // library will be overridden when it is called. // @see \Drupal\Core\Asset\LibraryDiscovery::getLibraryByName() if ($override_definition) { $libraries[$library_name]['override'] = $override_definition; } else { $libraries[$library_name]['override'] = FALSE; } } elseif (is_array($override_definition)) { // An array definition implies an override for an asset within this // library. foreach ($override_definition as $sub_key => $value) { // Throw an exception if the asset is not properly specified. if (!is_array($value)) { throw new InvalidLibrariesOverrideSpecificationException(sprintf('Library asset %s is not correctly specified. It should be in the form "extension/library_name/sub_key/path/to/asset.js".', "$extension/$library_name/$sub_key")); } if ($sub_key === 'drupalSettings') { // drupalSettings may not be overridden. throw new InvalidLibrariesOverrideSpecificationException(sprintf('drupalSettings may not be overridden in libraries-override. Trying to override %s. Use hook_library_info_alter() instead.', "$extension/$library_name/$sub_key")); } elseif ($sub_key === 'css') { // SMACSS category should be incorporated into the asset name. foreach ($value as $category => $overrides) { $this->setOverrideValue($libraries[$library_name], [$sub_key, $category], $overrides, $theme_path); } } else { $this->setOverrideValue($libraries[$library_name], [$sub_key], $value, $theme_path); } } } } } } return $libraries; }
© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/core!lib!Drupal!Core!Asset!LibraryDiscoveryParser.php/function/LibraryDiscoveryParser::applyLibrariesOverride/8.1.x