function system_update_8006 in Drupal 8
Place branding blocks in every theme.
File
- core/
modules/ system/ system.install, line 1836 - Install, update and uninstall functions for the system module.
Code
function system_update_8006() {
// When block module is not installed, there is nothing that could be done
// except showing a warning.
if (!\Drupal::moduleHandler()
->moduleExists('block')) {
return t('Block module is not enabled so site branding elements, which have been converted to a block, are not visible anymore.');
}
/** @var \Drupal\Core\Extension\ThemeHandlerInterface $theme_handler */
$theme_handler = \Drupal::service('theme_handler');
$custom_themes_installed = FALSE;
$message = NULL;
$langcode = \Drupal::service('language_manager')
->getCurrentLanguage()
->getId();
$site_branding_default_settings = [
'plugin' => 'system_branding_block',
'region' => 'content',
'settings.label' => 'Site branding',
'settings.label_display' => 0,
'visibility' => [],
'weight' => 0,
'langcode' => $langcode,
];
foreach ($theme_handler
->listInfo() as $theme) {
$theme_name = $theme
->getName();
switch ($theme_name) {
case 'bartik':
$name = 'block.block.bartik_branding';
$values = [
'id' => 'bartik_branding',
'region' => 'header',
] + $site_branding_default_settings;
_system_update_create_block($name, $theme_name, $values);
break;
case 'stark':
$name = 'block.block.stark_branding';
$values = [
'id' => 'stark_branding',
'region' => 'header',
] + $site_branding_default_settings;
_system_update_create_block($name, $theme_name, $values);
break;
case 'seven':
case 'classy':
case 'stable':
// Don't place any blocks or trigger custom themes installed warning.
break;
default:
$custom_themes_installed = TRUE;
$name = sprintf('block.block.%s_branding', $theme_name);
$values = [
'id' => sprintf('%s_branding', $theme_name),
'region' => 'content',
'weight' => '-50',
] + $site_branding_default_settings;
_system_update_create_block($name, $theme_name, $values);
break;
}
}
if ($custom_themes_installed) {
$message = t('Because your site has custom theme(s) installed, we had to set the branding block into the content region. Please manually review the block configuration and remove the site name, slogan, and logo variables from your templates.');
}
return $message;
}