Questo breve articolo è un semplice promemoria con le istruzioni per aggiungere un ID univoco ad ogni voce di un menu Drupal. In alcuni casi, spesso per esigenze di personalizzazione grafica, è utile infatti avere un identificativo delle voci di menu.
Mentre il classico print theme('links'...)
inserisce nell'output gli ID ad ogni elemento, funzioni come menu_tree()
non effettuano questa operazione. Si può quindi usare il seguente codice per risolvere il problema ed aggiungere un ID ed una classe:
<?php /** * Theme override for theme_menu_item() */ function phptemplate_menu_item($link, $has_children, $menu = '', $in_active_trail = FALSE, $extra_class = NULL) { $class = ($menu ? 'expanded' : ($has_children ? 'collapsed' : 'leaf')); if (!empty($extra_class)) { $class .= ' '. $extra_class; } if ($in_active_trail) { $class .= ' active-trail'; } // Add unique identifier static $item_id = 0; $item_id += 1; $id .= ' ' . 'menu-item-custom-id-' . $item_id; // Add semi-unique class $class .= ' ' . preg_replace("/[^a-zA-Z0-9]/", "", strip_tags($link)); return '<li class="'. $class .'" id="' . $id . '">'. $link . $menu ."</li>\n"; } ?>
Questo codice si può ovviamente modifcare per adattarlo alle proprie esigenze. Recentemente l'ho modificato nel seguente modo per mostrare solo la classe:
<?php /** * Theme override for theme_menu_item() */ function phptemplate_menu_item($link, $has_children, $menu = '', $in_active_trail = FALSE, $extra_class = NULL) { $class = ($menu ? 'expanded' : ($has_children ? 'collapsed' : 'leaf')); if (!empty($extra_class)) { $class .= ' '. $extra_class; } if ($in_active_trail) { $class .= ' active-trail'; } $class .= ' ' . preg_replace("/[^a-zA-Z0-9]/", "", strip_tags($link)); return '<li class="'. $class . '">'. $link . $menu ."</li>\n"; } ?>
Ultimi commenti
7 years 45 settimane fa
7 years 46 settimane fa
7 years 47 settimane fa
8 years 8 settimane fa
8 years 8 settimane fa
8 years 8 settimane fa
8 years 8 settimane fa
8 years 8 settimane fa
8 years 9 settimane fa
8 years 9 settimane fa