Module pathmenu

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour à tous,

Je viens de réaliser un module qui permet de régler certains problèmes de fil d'Ariane et de menu.

Je recherche des bonnes âmes pour :

  • trouver un nom valable pour le module
  • le tester
  • proposer des évolutions
  • détecter des inconsistances
  • proposer des modifications lui permettant de fonctionner sur la version 5
  • ...

Pour l'instant, je l'appelle 'pathmenu'. Vous pouvez télécharger le module pathmenu.

Que fait donc pathmenu ?

Il lit un ensemble de règles composées de conditions et d'actions et les exécutent. Plutôt qu'un long discours, voici un exemple de règle :

nodetype(story)->parentmenu(54)

Traduction : si le type de noeud est "story", alors la page sera rattachée temporairement au menu dont l'identifiant est 54.

Prenons le menu suivant :

  • Menu principal
    • Recettes
      • Entrée
      • Viande
      • Poisson <-- menu 54
      • Fromage
      • Dessert

Quand Drupal affichera un noeud de type "story", le menu principal sera déplié afin de voir l'entrée "Poisson" ainsi que ses sous-menus. Le fil d'Ariane sera "Accueil >> Recettes >> Poisson".

Les conditions utilisables sont :

  • nodetype(type de noeud) : condition sur le type de noeud
  • nodeid(identifiant du noeud) : condition sur l'identifiant d'un noeud
  • term(identifiant de terme) : condition sur un terme (taxonomy) auquel le noeud se rattache
  • urlstart(début d'url) : condition sur le début d'url

Les actions possibles sont :

  • parentmenu(identifiant du menu parent) : rattache la page courante au menu indiqué
  • parentpath(chemin interne) : rattache la page courante au chemin indiqué
  • localtask(titre,chemin) : ajoute une tâche locale à la page courante

Les conditions et les actions peuvent se cumuler :
urlstart(recette/)+nodetype(story)->parentmenu(54)+localtask(info,node/3/info)

Notes :

  • pathmenu ne crée aucune table
  • dès qu'une condition est remplie, l'action correspondante est exécutée, les règles suivantes sont ignorées, l'ordre d'écriture des règles est donc important
  • les règles sont saisies dans une textarea, chaque règle doit tenir sur une ligne, toute ligne commençant par // est considérée comme un commentaire
  • les règles sont compilées en code PHP lors de leur soumission afin de limiter leur impact sur le système
Forum : 
Version de Drupal : 

C'est parti :)

Je viens de le balancer dans sites/all/modules et je suppose qu'en passant par Administrer » Construction du site » Modules, dans "Other" je devrais pouvoir le trouver. Mais ce n'est pas le cas.

(testé sur 3 sites)

Alors j'ai pas teste si le code etait compatible avec la version 5 de Drupal, cependant vu qu'il manque le fichier .info, de toutes facons, Drupal va pas le voir.

Donc il suffit de rajouter un fichier pathmenu.info avec les infos suivantes:

; $Id$
name = pathmenu
description = Solve problems whit breadcrumb.
package = Other

Et voila.

Bien vu! :)

Une fois fait (et les droits d'usages de pathmenu ajouté au groupe utlisateur) sa réaction est étrange...

Il n'apparait nulle part dans l'administration mais s'affiche tout de même dans les menus types nice_menus ou admin_menu. Un peu comme s'il était considéré non pas comme une fonction mais comme une catégorie. (et pas dans Administration » Configuration comme on pourrait s'y attendre)

En cliquant sur pathmenu via ces dits menus css je tombe sur un:

warning: call_user_func_array(): First argumented is expected to be a valid callback, 'pathmenu_form' was given in /(...)/includes/form.inc on line 218.

la ligne en question...

  // If $callback was returned by a hook_forms() implementation, call it.
  // Otherwise, call the function named after the form id.
  $form = call_user_func_array(isset($callback) ? $callback : $form_id, $args);

Cela semble intimement lié avec ce qui est évoqué ici: http://drupalfr.org/node/1134
Mais comme je suis une brêle j'ai du mal à percuter.

Hello,

Ben apparement Zigazou s'est éloigné de la chose, c'est la vie...

Peut-être faudrait il trouver des développeurs pour reprendre ce module qui semble excessivement pratique et utile, je ne sais...