Submitted by cedico on
Bonjour,
Je suis nouveau sur Drupal et je voudrais savoir comment il faut faire pour rajouter proprement des commentaires sous des éléments de menu svp ?
-> chaque 1ère ligne est un lien de menu normal et chaque 2nde ligne est un commenaire associé au menu...
ex :
-
Menu 1
(description 1) -
Menu 2
(description 2)
...
La seule façon que j'ai trouvée a été de faire ainsi (voir ci-dessous)... mais je suis sur que le code est loin d'être propre... ;-)
- La seule contrainte que j'ai est d'avoir la possibilité de lire la description (champ) du menu correspondant (dans l'interface d'admin) afin d'afficher dynamiquement la valeur récupérée.
mais actuellement, la seule "astuce" que j'ai trouvée consiste à récupérer la description directement dans le code HTML pour en extraire le texte contenu dans la balise "title".
Pas très propre, je pense... ;-)
- D'autre part, actuellement, pour déterminer le node menu correspondant, je teste leur nom, y a t-il une autre façon de faire ça svp ?
Merci de votre aide...
Cédric
function myTheme_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';
}
$css_id = strip_tags($link);
// test the node for which i want to add comment
if (stripos($link, 'MyMenu1') > 0 || stripos($link, 'MyMenu2') > 0) {
$rec = 'title="';
$i = stripos($link, $rec);
if ($i > 0) {
$j = strpos($link, '"', $i+strlen($rec));
if ($j > 0)
$title = substr($link, $i+strlen($rec), $j-$i-strlen($rec));
}
}
$title = ($title != "") ? '
[' . $title . ']
' : '';
return '
\n" . $title;
}
Tu as un exemple de site qui
Permalien Soumis par Yoran le 19 Mars, 2010 - 09:27
Tu as un exemple de site qui fait ce que tu cherches à faire ?
voici un exemple de site
Permalien Soumis par cedico le 19 Mars, 2010 - 10:54
voici un exemple de site (désolé, c'est en allemand :-) ) :
http://sintmartensonsbeekkwartier.nl/
Sous chaque menu, on trouve une petite description.
Je voudrais faire un peu pareil mais je n'ai pas besoin que la description soit un lien hypertexte.
Par contre, ce que je voudrais c'est que la description soit celle que j'ai renseignée dans le champ 'Description' du menu correspondant dans la console d'admin de Drupal (admin -> site building -> menu -> navigation -> mon menu).
Ainsi, la description serait affichée dynamiquement sans la stocker en dur dans le code Php.
Or, le code que j'ai écrit (ci-dessous) fonctionne très bien... mais ça m'oblige à récupérer la Description dans le code HTML...
En gros... je cherche à faire globalement plus propre...
function myTheme_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';
}
$css_id = strip_tags($link);
// test the node for which i want to add comment
if (stripos($link, 'MyMenu1') > 0 || stripos($link, 'MyMenu2') > 0) {
$rec = 'title="';
$i = stripos($link, $rec);
if ($i > 0) {
$j = strpos($link, '"', $i+strlen($rec));
if ($j > 0)
$title = substr($link, $i+strlen($rec), $j-$i-strlen($rec));
}
}
$title = ($title != "") ? '<div class="views-field-created"><h0> [' . $title . ']</h0></div>' : '';
return '<li class="'. $class .'">'. $link . $menu ."</li>\n" . $title;
}
Cédric
Plutôt que de te casser les
Permalien Soumis par Yoran le 19 Mars, 2010 - 14:45
Plutôt que de te casser les pieds à essayer de modifier un lien, pourquoi ne fais-tu pas une fonction qui affiche ton menu à ta manière, en utilisant le champ description tout simplement ? C'est très simple à réaliser, si tu connais l'identifiant de ton menu (ex. navigation), tu utilises la fonction
, ensuite tu n'as plus qu'à te balader dans l'arborescence. La fonction te renvoie une racine sous la forme d'un tableau de tableaux. Chacun de ces tableau est composé de deux champs :
Dans ton cas tu n'as même pas à te préoccuper des éléments en dessous de 'below' mais juste de créer ton markup à partir des objets links du premier niveay.
Ah, cool intéressant... je
Permalien Soumis par cedico le 19 Mars, 2010 - 15:36
Ah, cool intéressant... je vais potasser ça, merci encore !
Et pourrais-tu m'indiquer le
Permalien Soumis par cedico le 29 Mars, 2010 - 22:46
Et pourrais-tu m'indiquer le meilleur endroit pour appeler cette fonction ?
et d'ailleurs, vu que ça concerne l'affichage de mon menu "Navigation", dans quel module dois-je ajouter mon code ?
Peut-être les fonctions :
Permalien Soumis par cedico le 30 Mars, 2010 - 12:00
Peut-être les fonctions :
MONTHEME_theme($existing, $type, $theme, $path) ou
MONTHEME_preprocess_page(&$vars, $hook)
sont-elles adaptées ?
Il y a une variable
Permalien Soumis par nyot559 le 21 Mai, 2010 - 13:04
Il y a une variable drupal($item['description']) (vu la http://www.computerminds.co.uk/adding-custom-markup-drupal-menu-items)