I want to generate the html elements and their classes to fit my styling of the main menu.
I'm confused by all the near-possibilities offered in the api documentation and by looking at core themes etc. and still can't quite see what I have to do, or where I have to do it.
I would be very grateful for clear pointers to:
- which php functions I have to write;
- which variables I need to add / update;
- in which files the functions will go.
Presumably, in MYTHEME.theme
I will need a preprocess function of some sort to add to the attributes
and item.attributes
variables that links.html.twig
uses to print the menu ul
and the menu item li
's.
[Update] So far I have discovered one way to place classes on the Main Menu's ul
but ideally I would like to add a class to each submenu's ul
indicating the depth of the sub-menu.
And I cannot locate any documentation or examples from which I can understand the generation / modifying of the main menu's individual li
nk items.
This function goes into the file MYTHEME.theme
.
function MYTHEME_preprocess_page(&$variables) {
// Pass the main menu and secondary menu to the template as render arrays.
if (!empty($variables['main_menu'])) {
$variables['main_menu']['#attributes']['id'] = 'main-menu-links';
$variables['main_menu']['#attributes']['class'] = array('links', 'clearfix', 'MYNEW_class');
}
}