У меня есть функция препроцесса, которая прекрасно работает, когда меню представляет собой одноуровневый список. Однако я хотел бы, чтобы он работал с меню suckerfish. Я хочу добавить класс в пункт меню верхнего уровня, чтобы я мог его стилизовать. Вот код, который я использовал для одноуровневого меню:
function cti_flex_preprocess_page(&$vars, $hook) {
// Make a shortcut for the primary links variables
$primary_links = $vars['primary_links'];
// Loop thru the menu, adding a new class for CSS selectors
$i = 1;
foreach ($primary_links as $link => $attributes){
// Append the new class to existing classes for each menu item
$class = $attributes['attributes']['class'] . " item-$i";
// Add revised classes back to the primary links temp variable
$primary_links[$link]['attributes']['class'] = $class;
$link['title'] = '<span class="hide">' . check_plain($link['title']) . '</span>';
$i++;
} // end the foreach loop
// reset the variable to contain the new markup
$vars['primary_links'] = $primary_links;
}
Я пытался использовать функцию menu_tree()
безрезультатно, например:
function cti_flex_preprocess_page(&$vars, $hook) {
// Make a shortcut for the primary links variables
$primary_links = $vars['primary_links'];
// Loop thru the menu, adding a new class for CSS selectors
$i = 1;
foreach ($primary_links as $link => $attributes){
// Append the new class to existing classes for each menu item
$class = $attributes['attributes']['class'] . " item-$i";
// Add revised classes back to the primary links temp variable
$primary_links[$link]['attributes']['class'] = $class;
$link['title'] = '<span class="hide">' . check_plain($link['title']) . '</span>';
$i++;
} // end the foreach loop
// reset the variable to contain the new markup
$vars['primary_links_tree'] = menu_tree(variable_get('menu_primary_links_source', '$primary_links'));
}
Любые идеи будут с благодарностью.