protected LibraryDiscoveryParser::applyLibrariesOverride($libraries, $extension)
Apply libraries overrides specified for the current active theme.
Parameters
array $libraries: The libraries definitions.
string $extension: The extension in which these libraries are defined.
Return value
array The modified libraries definitions.
File
- core/lib/Drupal/Core/Asset/LibraryDiscoveryParser.php, line 333
Class
- LibraryDiscoveryParser
- Parses library files to get extension data.
Namespace
Drupal\Core\Asset
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | 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 ; } |
Please login to continue.