function shortcut_install

Same name and namespace in other branches
  1. 11.x core/modules/shortcut/shortcut.install \shortcut_install()
  2. 10 core/modules/shortcut/shortcut.install \shortcut_install()
  3. 9 core/modules/shortcut/shortcut.install \shortcut_install()
  4. 8.9.x core/modules/shortcut/shortcut.install \shortcut_install()
  5. 7.x modules/shortcut/shortcut.install \shortcut_install()

Implements hook_install().

File

core/modules/shortcut/shortcut.install, line 55

Code

function shortcut_install(bool $is_syncing) : void {
  // Theme settings are not configuration entities and cannot depend on modules
  // so to set a module-specific setting, we need to set it with logic.
  if (\Drupal::service('theme_handler')->themeExists('claro')) {
    \Drupal::configFactory()->getEditable("claro.settings")
      ->set('third_party_settings.shortcut.module_link', TRUE)
      ->save();
  }
  if (\Drupal::service('theme_handler')->themeExists('olivero')) {
    \Drupal::configFactory()->getEditable("olivero.settings")
      ->set('third_party_settings.shortcut.module_link', TRUE)
      ->save();
  }
  // Add the shortcuts block to the navigation layout if Navigation is already
  // installed. When both are installed in the same request,
  // navigation_install() may have already added the block via invokeAll(),
  // so check for duplicates.
  if (!$is_syncing && \Drupal::moduleHandler()->moduleExists('navigation')) {
    $config = \Drupal::configFactory()->get('navigation.block_layout');
    if (!$config->isNew()) {
      $already_exists = FALSE;
      foreach ($config->get('sections') ?? [] as $section) {
        foreach ($section['components'] ?? [] as $component) {
          if (isset($component['configuration']['id']) && $component['configuration']['id'] === 'navigation_shortcuts') {
            $already_exists = TRUE;
            break 2;

          }
        }
      }
      if (!$already_exists) {
        \Drupal::service('plugin.manager.config_action')->applyAction('addNavigationBlock', 'navigation.block_layout', [
          'region' => 'content',
          'configuration' => [
            'id' => 'navigation_shortcuts',
            'label' => 'Shortcuts',
            'label_display' => '0',
            'provider' => 'shortcut',
          ],
          'weight' => 0,
          'additional' => [],
        ]);
      }
    }
  }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.