Joomla, modifier le template du menu

Posté le Dimanche 20 février 2011 - 15:11
Dernière mise à jour le Vendredi 2 décembre 2016 - 16:20

Note: ce code est pour Joomla  1.5, mais le principe est le même pour la version 1.6, il devrait en théorie fonctionner aussi.

Dans le cadre d'une refonte graphique d'un site j'ai besoin de distinguer les éléments d'un menu de navigation pairs et impairs, joomla n'offrant pas ce comportement par défaut j'ai du modifier le template du menu.

Pour info, on ne modifie jamais le template d'un composant ou d'un module directement, on le surcharge. On copie le fichier de template dans le dossier du thème, Joomla ira tout d'abord voir si il existe un surchargement du template et le cas échéant utilisera celui par défaut.

Donc dans mon cas j'ai copier le fichier /modules/mod_mainmanu/tmpl/default.php dans le dossier /html/mod_mainmenu/ à la racine de mon thème.

Ensuite pour pouvoir distinguer un élément sur deux dans mon menu j'ai simplement ajouté le code suivant:

$i = 0;
foreach ($node->children() as $child)
{
  if ($child->name() == 'li') {
    $case = ($i%2==0) ? 'odd' : 'even';
    if ($child->attributes('class')) {
      $child->addAttribute('class', $child->attributes('class').' '.$case);
    } else {
      $child->addAttribute('class',' '.$case);
    }   
    $i++;
  }
}

Du coup suivant si $i est pair ou nom j'ajoute soit la class odd ou even à mon élément de menu.

 

Comments

Ajouter un commentaire

Ne sera pas publié

HTML restreint

  • Balises HTML autorisées : <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • Les adresses de pages web et les adresses courriel se transforment en liens automatiquement.
CAPTCHA
Désolé, pour ça, mais c'est le seul moyen pour éviter le spam...