You are here

public function UltimenuTree::loadSubMenuTree in Ultimenu 8.2

Returns a list of submenu links based on the menu name.

Parameters

string $menu_name: The menu name.

string $link_id: The link ID.

string $title: The link title.

Return value

array An array of the requested submenu links.

Overrides UltimenuTreeInterface::loadSubMenuTree

File

src/UltimenuTree.php, line 109

Class

UltimenuTree
Provides Ultimenu utility methods.

Namespace

Drupal\ultimenu

Code

public function loadSubMenuTree($menu_name, $link_id, $title = '') {
  $build = [];
  $level = 1;
  $depth = 4;
  $parameters = $this->menuTree
    ->getCurrentRouteMenuTreeParameters($menu_name);
  $parameters
    ->setRoot($link_id)
    ->excludeRoot()
    ->onlyEnabledLinks();
  $parameters
    ->setMaxDepth(min($level + $depth - 1, $this->menuTree
    ->maxDepth()));
  $tree = $this->menuTree
    ->load($menu_name, $parameters);
  $manipulators = [
    [
      'callable' => 'menu.default_tree_manipulators:checkAccess',
    ],
    [
      'callable' => 'menu.default_tree_manipulators:generateIndexAndSort',
    ],
  ];
  $tree = $this->menuTree
    ->transform($tree, $manipulators);
  if ($tree) {
    $build['content'] = $this->menuTree
      ->build($tree);
    $css_name = Html::cleanCssIdentifier(mb_strtolower($menu_name . '-' . $title));
    $build['#attributes']['class'] = [
      'ultimenusub',
      'ultimenusub--' . $css_name,
    ];
    $build['#theme_wrappers'][] = 'container';
  }
  return $build;
}