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

Système de menus Drupal 6.x

Référence en anglais sur drupal.org : 18 Septembre 2008 - 02h08
http://drupal.org/node/102338


Le système de menus de Drupal en fait beaucoup plus que son nom ne le laisse à penser. Il ne sert pas seulement à afficher des menus pour la navigation dans le site, il lie également les chemins Drupal à leurs callbacks (fonctions de rappel) tout en vérifiant les droits d'accès. Cette deuxième tâche est appelée dispatching. Les raisons de cet agencement : lorsque vous définissez un lien vers une page, vous avez peut-être envie de déclarer ce qui se passera lorsque vous cliquez sur ce lien.

Cela a finalement abouti à une structure de donnée très complexe qui a été enregistrée dans la base de données en tant que tableau sérialisé -- par utilisateur. Desérialiser ce tableau à chaque chargement de page non mise en cache utilise des tonnes de mémoires. Le modifier lors de sa construction ou de l'exécution requiert des hacks pas très propres.

Quelques malentendus sur comment l'accès à un élément s'applique à ses enfants ont conduit certains modules contributifs à de graves failles de sécurité. Cela met en exergue le besoin de règles d'héritage bien pensées et proprement déclarées.

Drupal 6.x dispose d'un nouveau système de menus. Les données sont réparties sur deux tables : {menu_router} et {menu_links}. La table {menu_router} est renseignée avec les callbacks déclarée par les implémentations de hook_menu, Drupal consulte désormais cette table pour déterminer l'accès et la fonction callback adéquate lorsqu'un internaute essaie de se rendre dans une page en particulier. Tout ce qui fait partie d'un path est stocké dans une colonne de la table, ainsi, l'empreinte mémoire est sensiblement réduite. Les règles d'héritage pour les accès etc sont clairement décrites dans la documentation.

La table {menu_links} contient les liens qui sont affichés dans le bloc Navigation et dans les autres blocs de menus. Certains de ces éléments sont automatiquement dérivés de {menu-router}, mais d'autres peuvent être ajoutés par l'administrateur du site via le module Menus ou via d'autres modules.