diff --git a/core/lib/Drupal/Core/DrupalKernel.php b/core/lib/Drupal/Core/DrupalKernel.php index d42c550..acf0ddb 100644 --- a/core/lib/Drupal/Core/DrupalKernel.php +++ b/core/lib/Drupal/Core/DrupalKernel.php @@ -721,6 +721,13 @@ protected function moduleData($module) { $profile_directories = array_map(function ($profile) { return $profile->getPath(); }, $profiles); + + // Allow additional profile directories to be added from settings.php. + // This provides support for "base profiles". + $settings_profile_directories = Settings::get('profile_directories'); + if (!empty($settings_profile_directories)) { + $profile_directories = array_merge($settings_profile_directories, $profile_directories); + } $listing->setProfileDirectories($profile_directories); // Now find modules. diff --git a/core/lib/Drupal/Core/Extension/ExtensionDiscovery.php b/core/lib/Drupal/Core/Extension/ExtensionDiscovery.php index 3d68561..fb8c3dd 100644 --- a/core/lib/Drupal/Core/Extension/ExtensionDiscovery.php +++ b/core/lib/Drupal/Core/Extension/ExtensionDiscovery.php @@ -22,6 +22,13 @@ * @encode * to your settings.php. * + * To add additional profile directories, add + * @code + * $settings['profile_directories'] = array(path); + * @encode + * to your settings.php. If multiple paths are specified, they are searched + * from last to first. + * */ class ExtensionDiscovery { @@ -256,6 +263,14 @@ public function setProfileDirectoriesFromSettings() { if ($profile) { $this->profileDirectories[] = drupal_get_path('profile', $profile); } + + // Allow additional profile directories to be added from settings.php. + // This provides support for "base profiles". + $settings_profile_directories = Settings::get('profile_directories'); + if (!empty($settings_profile_directories)) { + $this->profileDirectories = array_merge($settings_profile_directories, $this->profileDirectories); + } + return $this; }