function ComponentPluginManager::makePathRelativeToLibraryRoot
Same name in this branch
- 10 core/lib/Drupal/Core/Theme/ComponentPluginManager.php \Drupal\Core\Theme\ComponentPluginManager::makePathRelativeToLibraryRoot()
Same name in other branches
- 11.x core/modules/sdc/src/ComponentPluginManager.php \Drupal\sdc\ComponentPluginManager::makePathRelativeToLibraryRoot()
- 11.x core/lib/Drupal/Core/Theme/ComponentPluginManager.php \Drupal\Core\Theme\ComponentPluginManager::makePathRelativeToLibraryRoot()
Takes a path and makes it relative to the library provider.
Drupal will take a path relative to the library provider in order to put CSS and JS in the HTML page. The SDC module is the provider for all the auto-generated libraries for the components. This means that in order to add <root>/themes/custom/my_theme/components/my-component/my-component.css in the page, we need to crawl back up from <root>/core/modules/sdc first: ../../../../themes/custom/my_theme/components/my-component/my-component.css
Parameters
string $path: The path to the file.
Return value
string The path relative to the library provider root.
2 calls to ComponentPluginManager::makePathRelativeToLibraryRoot()
- ComponentPluginManager::findAsset in core/
modules/ sdc/ src/ ComponentPluginManager.php - Finds assets related to the provided metadata file.
- ComponentPluginManager::translateLibraryPaths in core/
modules/ sdc/ src/ ComponentPluginManager.php - Changes the library paths, so they can be used by the library system.
File
-
core/
modules/ sdc/ src/ ComponentPluginManager.php, line 475
Class
- ComponentPluginManager
- Defines a plugin manager to deal with sdc.
Namespace
Drupal\sdcCode
private function makePathRelativeToLibraryRoot(string $path) : string {
$library_provider_root = $this->moduleHandler
->getModule('sdc')
->getPath();
$num_dots = count(array_filter(explode(DIRECTORY_SEPARATOR, $library_provider_root)));
$dots = str_repeat('../', $num_dots);
$path_from_root = str_starts_with($path, $this->appRoot) ? substr($path, strlen($this->appRoot) + 1) : $path;
return $dots . $path_from_root;
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.