You are here

function menu_item_extras_theme_suggestions_menu_alter in Menu Item Extras 8.2

Same name and namespace in other branches
  1. 8 menu_item_extras.module \menu_item_extras_theme_suggestions_menu_alter()

Implements hook_theme_suggestions_HOOK_alter().

File

./menu_item_extras.module, line 213
Manage fields for the menu items.

Code

function menu_item_extras_theme_suggestions_menu_alter(array &$suggestions, array $variables) {
  if (isset($variables['menu_name'])) {
    $menu_name = $variables['menu_name'];

    /** @var \Drupal\menu_item_extras\Utility\Utility $utility */
    $utility = \Drupal::service('menu_item_extras.utility');
    $menu_name = $utility::sanitizeMachineName($menu_name);
    if (Utility::checkBundleHasExtraFieldsThanEntity('menu_link_content', $variables['menu_name'])) {

      // We have to add back the original suggestion that normally is generated
      // from the #theme, because in pre-process we are replacing it with 'menu'.
      $suggestions[] = $utility::suggestion('menu', $menu_name);
      $suggestion_prefix = 'menu__extras';

      // Custom suggestions.
      $suggestions[] = $suggestion_prefix;
      $suggestions[] = $utility::suggestion($suggestion_prefix, $menu_name);

      // Custom suggestions for the parent region.
      if (isset($variables['attributes']['data-region'])) {
        $suggestions[] = $utility::suggestion($suggestion_prefix, $menu_name, $variables['attributes']['data-region']);
      }
    }
  }
}