You are here

function template_preprocess_ultimenu in Ultimenu 8.2

Same name and namespace in other branches
  1. 8 ultimenu.theme.inc \template_preprocess_ultimenu()
  2. 7 templates/ultimenu.theme.inc \template_preprocess_ultimenu()

Prepares variables for ultimenu templates.

Default template: ultimenu.html.twig.

Parameters

array $variables: An associative array containing:

  • element: An associative array containing the properties of the element. Properties used: #config, #items, #plugin_id, #attributes.

    • config: The available config related to this particular instance.
    • items: An array of available items.
    • attributes: An associative array of attributes to be placed in the UL tag.

See also

ultimenu.html.twig

File

./ultimenu.theme.inc, line 26
Preprocessors and theme functions of Ultimenu module.

Code

function template_preprocess_ultimenu(array &$variables) {
  $element = $variables['element'];
  foreach ([
    'config',
    'items',
  ] as $key) {
    $variables[$key] = isset($element["#{$key}"]) ? $element["#{$key}"] : [];
  }
  $config = $variables['config'];
  $variables['goodies'] = $goodies = ultimenu()
    ->getSetting('goodies');
  $variables['attributes'] = new Attribute();
  $variables['attributes']['id'] = 'ultimenu-' . $config['menu_name'];
  $variables['attributes']['data-ultimenu'] = $config['menu_name'];
  if (!empty($config['ajaxify'])) {
    $variables['attributes']['data-ultiajax'] = TRUE;
  }
  $classes = isset($variables['attributes']['class']) ? $variables['attributes']['class'] : [];
  if ($config['menu_name'] == 'main') {

    // Makes Ultimenu hoverable if off-canvas is not enabled for all devices.
    if (empty($goodies['off-canvas-all'])) {
      $classes[] = 'ultimenu--hover';
    }
  }
  else {

    // Other Ultimenu is always hoverable for desktop.
    $classes[] = 'ultimenu--hover';
  }
  $variables['attributes']['class'] = array_merge([
    'ultimenu',
  ], $classes);
}