web-dev-qa-db-fra.com

Comment garder l'élément de menu parent actif pour les vues non-menu?

Simplifié, j'ai un composant avec plusieurs vues et une configuration de menu comme celle ci-dessous.

Accueil (c'est aussi la page par défaut de Joomla)

...

Admin

  • Utilisateurs
  • Paramètres

Admin> Utilisateurs est une vue utilisant la valeur par défaut, php avec display () {...} et o/c un fichier default.xml pour l'élément de menu. Cette vue contient également un formulaire edit.php affiché via dispalyEdit () {} appelé edit.php. Tout cela est plutôt basique et fonctionne bien. Toutefois, si le formulaire d'édition s'affiche, le menu principal sélectionne "HOME" ou la page par défaut de Joomla.

Comment puis-je conserver la sélection du menu principal sur "Admin"? ou en général, comment garder le parent sélectionné même si la vue enfant N'EST PAS un élément de menu?

Cela semble assez simple, mais je ne trouve pas de réponse. Il semble inutile d'ajouter "modifier" au menu car il ne peut pas être appelé à partir du menu. Des pointeurs?

2
Andreas

J'ai fait quelque chose de similaire en construisant une présentation personnalisée pour le module Menu et en la mettant dans mon modèle.

Le chemin d'accès à cette disposition ressemble à ceci: templates/your_template/html/mod_menu/your_custom_layout.php

La mise en page originale est la suivante: modules/mod_menu/tmpl/default.php

Copiez le code de default.php, insérez-le dans your_custom_layout.php et personnalisez-le.

Dans mes cas, j’ai fait quelque chose si-d’autre pour vérifier quelle page était l’utilisateur, puis j'ai ajouté la classe CSS "active" à l’élément de menu parent. Dans votre cas, vous pouvez rendre votre élément de menu Admin "actif" (sélectionné) et supprimer l'état "actif" (sélectionné) de votre élément de menu Accueil.

En bref, il s’agit simplement d’ajouter/de supprimer une classe CSS pour un élément de menu actif/sélectionné. La classe à ajouter/supprimer dépend de votre modèle.

Une autre méthode consiste à utiliser la fonction setActive (), mais je ne l’ai pas encore utilisée et je ne sais pas trop comment cela fonctionne. Ceci est un exemple de code:

    $app = JFactory::getApplication();
    $menu = $app->getMenu();
    $menu->setActive($menuItemId);

$ menuItemId est l'ID de l'élément de menu que vous voulez définir comme actif/sélectionné, c'est Admin dans votre exemple. Vous pouvez voir comment il est utilisé dans libraries/cms/router/site.php.

2
Hung Tran