Voilà, voilà... Fin de l'aventure...

 

Fermeture de kolossaldrupal.org dans...


Bonjour tout le monde,

Drupal évolue, les versions changent et Kolossaldrupal.org était essentiellement consacré à la version 6 de Drupal.

Autant dire que les infos présentées ici commencent à dater...

Faute de temps, je ne peux plus garder le site Kolossaldrupal à jour...

Je vous aurais bien proposé de reprendre le flambeau mais... c'est tellement simple de nos jours de se faire son propre site à soi...Pourquoi s'embêter alors ? :-)

Ce site restera donc en l'état, tel qu'il était en 2011...

Ah la la ! Cela ne nous rajeunit pas !

Manuel Vila - Avril 2016

Comment le système gère l'ordre des menus

Référence en anglais sur drupal.org : 25 Mars 2009 - 20h39
http://drupal.org/node/141866


Remarque : cette page est hautement technique et n'est nécessaire que si vous voulez modifier menu.inc.

Il y a sept colonnes d'entiers qui repésentent chacune une partie du chemin matérialisé (le chemin menant à la racine), p1..p7. Cet algorithme est l'implémentation de materialized path par Peter Wolanin's, qui exploite intensément le fait que nous connaissons la profondeur maximale de l'arbre.

Tous les nombres que vous voyez ici sont des identifiants de liens de menu, une clé primaire de type entier pour chaque lien de menu (abrégé : mlid). Notez que pour les requêtes, la liste des « parents » est dérivée de p1, p2, p3, non stockés séparément. mlid, plid sont stockés séparément

Materialized path mlid plid set of parents
5.0.0 5 0 0
5.6.0 6 5 5, 0
7.0.0 7 0 0
7.13.0 13 7 7. 0
7.15.0 15 7 7, 0
7.15.23 23 15 15, 7, 0
7.15.16 16 15 15, 7, 0
7.10.0 10 7 7, 0
7.10.22 23 15 15, 7, 0
12.0.0 12 0 0

Pour obtenir l'arbre pour mlid = 23, nous construisons les parents à partir de p2,p1, 0

SELECT * from {menu_links} WHERE plid in (15, 7, 0) ORDER BY p1 ASC, p2 ASC, p3 ASC

résultat (montrant p1.p2.p3)

5.0.0
7.0.0
7.10.0
7.13.0
7.15.0
7.15.16
7.15.23
12.0.0

Nous devons trier chaque sous-arbre par son poids et son titre dans PHP, mais l'alternative consiste