web-dev-qa-db-fra.com

Comment puis-je styler l'élément de menu Joomla actuel lorsque j'utilise un alias d'élément de menu comme type d'élément de menu dans Joomla 2.5?

FOND

Je ne parviens pas à styler l'élément de menu actuellement actif dans Joomla 2.5. Après beaucoup de recherches et de recherches approfondies, il s'avère que mon problème est dû au fait que j'utilise un type d'élément de menu de type "menu item alias ”.

L'exemple ci-dessous illustre mon problème.

Supposons que j’ai un élément de menu appelé "tutoriels" lorsque je clique dessus et que je vais à cette page, je veux le tutorials menu item à avoir un style différent pour que l’utilisateur sache qu’il se trouve sur la page des tutoriels. Malheureusement, aucune classe "actuelle" n'est attachée au menu, il est donc difficile (impossible?) De styliser l'élément de menu qui correspond à la page actuelle.

QUESTIONS

  1. Comment puis-je styler l'élément de menu Joomla actuel lorsque j'utilise un alias d'élément de menu comme type d'élément de menu dans Joomla 2.5?
  2. Si je ne peux pas le nommer, existe-t-il une solution de contournement? Un hack ou une alternative à l'alias d'élément de menu? N'oubliez pas que je ne souhaite pas créer de contenu en double.

PDATE1

Une classe de active est ajoutée au menu actuel. Voici un exemple de ce que je vois lorsque je clique sur l'élément de menu le plus élevé.

CSS classes for uppermost menu item which is the current page

Le problème, c’est que tous les éléments de sous-menu sont également stylés. Comment empêchez-vous cela? Voici le CSS d'un sous-menu qui est un enfant de l'élément de menu en cours (notez que la page en cours est pour l'élément de menu le plus haut).

CSS for submenu item which is a child of the uppermost current menu item

PDATE2

J'ai pris en compte les réponses et joué un peu plus avec le CSS. Il s'avère que j'ai mal appliqué le style CSS. J'aurais dû utiliser li.active pour styler l'élément de menu correspondant à la page en cours.

1
TryHarder

Réponse 1: Y a-t-il un statut actif sur le lien de pseudonyme? Il devrait y avoir - parce que vous pouvez utiliser cela à la place de courant pour ce cas particulier. En fait, j’ajoute généralement .active à tous mes styles .current pour capturer ces types de liens.

Réponse 2: En ce qui concerne le piratage, voici une option:

Ajoutez un identifiant de corps pour votre page.

Cela dépasse le doctype:

<?php
  $app = JFactory::getApplication();
  $menu = $app->getMenu()->getActive();
  $pageclass = '';

  if (is_object($menu))
    $pageclass = $menu->params->get('pageclass_sfx');
?>

Et cela remplace

<body id="<?php echo $pageclass ? htmlspecialchars($pageclass) : 'default'; ?>">

Ensuite, dans l’élément de menu de votre tutoriel (le non-alias), ajoutez une classe de page. Maintenant, lorsque vous accédez à la page du didacticiel, un identifiant de corps apparaît pour votre page. Maintenant, prenez votre classe d'objets alias li et modifiez son apparence pour qu'elle corresponde au style actuel dans cet identifiant de corps.

1
Faye

Le module de menu par défaut de Joomla 2.5 ajoute la classe active aux éléments de menu actifs, event au type d’élément de menu alias.

Il est possible que votre modèle contienne déjà un remplacement de modèle pour le module de menu, ce qui donnera à votre module un comportement différent.

Dans tous les cas, il est très facile de modifier la sortie du module de menu avec votre substitution et d’ajouter les classes de votre choix.

2
FFrewin