webleads-tracker

hook_navigation : comment qui marche ?

Vincent StartUp
Avatar
Bonjour,

Le hook_navigation est sorti il y a quelques semaines.

Je voudrais modifier le breadcrumb mais j'ai l'impression qu'il ne le permet pas malgré sa description : "Affichage des éléments de navigation (menu, breadcrumb) sur le site public".

Je l'ai testé un peu, la methode "editMenuBeforeStandard" permet de récupérer et de modifier l'arborescence des menus. En revanche je n'ai pas compris ce que fait la methode "editMenuItemBeforeStandard", une idée ?

Pour mon développement je veux juste supprimer le 1er élement du breadcrumb, mais à aucun moment ces 2 méthodes ne parlent du breadcrumb, j'ai loupé quelque chose ?

Bonne soirée,
Vincent - StartUp Communication

Vincent StartUp
Avatar
up
Vincent - StartUp Communication

Adrien
Avatar
up ;)
Adrien Développeur

Vincent StartUp
Avatar
up up up = ticket :)
Vincent - StartUp Communication

Adrien
Avatar
Salut,

La méthode "editMenuItemBeforeStandard" permet de modifier l'affichage d'un lien dans le menu. Par exemple, on peut définir une description apparaissant sous les menus de niveau 1.

public function editMenuItemBeforeStandard($mx, $headingId, &$mxPrefix, &$mxLinkTagId, &$mxHrefTagId, &$mxClassTagId){
  //premier niveau  
  if($mxPrefix == "first_level"){
   //on recherche la description du lien
   $description = em_db::one("SELECT sep_description FROM `rubriques` WHERE id_rubrique=".$headingId);
   
   //si il y en a une on l'applique
   if($description){
    $mx->mxText("first_level.description.description", $description);
   }
  }
}


Il faut pour l'exemple rajouter la balise mx "description" dans le template du menu.
Adrien Développeur

Vincent StartUp
Avatar
Salut Adrien,

Je te remercie pour ce très bon exemple. Depuis j'ai utilisé le hook navigation, d'ailleurs il y a une nouvelle fonction assez pratique (merci medialibs) :
/**
	 * Modification de la génération du menu après le processus standard
	 * 
	 * @param Modelixe $mx Template
	 * @param array $tree Arborescence
	 * @param int $minLevel Niveau min. à prendre en compte
	 * @param int $maxLevel Niveau max. à prendre en compte
	 * @param string $type Type de menu
	 * 
	 * @return bool|string
	 */
	public function editMenuAfterStandard($mx, &$tree, &$minLevel, &$maxLevel, $type)


Attention je ne sais pas si elle est propagée partout. Elle per

Mon up était pour le breadcrumb, j'ai fait un ticket, je reposterais si j'ai du nouveau.

A+

Vincent - StartUp Communication

Adrien
Avatar
A OK. Pour le "breadcrumb", je pense qu'il faut mieux passer par un petit JS. La modification est tellement minime et l'utilisation des hooks engendre parfois des erreurs et surcharge le dossier spécifique ;)
Adrien Développeur

Vincent StartUp
Avatar
A vrai dire c'est ce que je fais déjà (js ou css), mais c'est pour un cas particulier : Plusieurs domaines sur un même site. Du coup je ne veux surtout pas voir le lien vers l'accueil et je ne veux pas qu'il soit référencé non plus (c'est souvent l'url atester). Je l'avais fait en css mais il y a eu des modifs de template : https://www.medialibs.com/partenariat/forum/tous-les-forum/topic-3997.html#post8578 et en plus le lien est référencable. Je suis d'accord pour la surcharge mais je ne vois pas trop comment faire autrement.

Bonne soirée,

Vincent - StartUp Communication