Ajout de < span > balises autour de chaque élément principal dans Drupal

StackOverflow https://stackoverflow.com/questions/1201558

  •  05-07-2019
  •  | 
  •  

Question

J'aimerais que mes liens principaux dans Drupal ressemblent à ceci dans le code:

<a class="active" title="Go to the Foo Homepage" href="/"><span>Home</span></a>

Plutôt que:

<a class="active" title="Go to the Foo Homepage" href="/">Home</a>

Je peux alors appeler le span séparément du a .

(Je sais que cela semble être une chose un peu étrange à faire, mais il s'agit de remédier au manque de prise en charge par IE du rayon de la bordure associé à l'incapacité de définir 2 images d'arrière-plan.)

Alors, savez-vous où & amp; comment je fais en sorte que Drupal insère ces balises dans tous mes liens principaux?

Était-ce utile?

La solution

Je suppose que quelque part dans votre page.tpl.php , vous avez quelque chose comme ceci pour afficher le menu principal:

print theme('links', $primary_links, array('class' => 'links primary-links'));

Une solution (pourrait ne pas être la solution la plus propre, mais devrait fonctionner) consisterait à itérer sur les éléments de $ liens_principaux , pour chacun d'eux:

  • activer le mode HTML
  • encapsulez le titre avec < span > et < / span >

Si votre menu comporte un seul niveau, je suppose que cela suffirait:

foreach ($primary_links as & $link) {
  $link['html'] = true;
  $link['title'] = '<span>' . $link['title'] . '</span>';
}

Ensuite, vous pouvez appeler thème comme vous le faites déjà.

Avec cela, vous devriez obtenir des balises < span > autour du texte du lien, sans les avoir injectées dans l'attribut titre du < a > tags.


Si vous avez plus de niveaux dans votre menu, vous devrez parcourir plus bas; soit avec deux boucles imbriquées, soit avec une sorte de récursion si vous ne connaissez pas la profondeur de vos menus.
(Je vais vous laisser vous amuser avec ça; ce que j'ai dit devrait être suffisant pour vous aider à démarrer ;-))


Sidenote, cela pourrait probablement être fait quelque part dans template.php aussi ... Peut-être un meilleur endroit; mais je vous laisse décider quelle solution vous préférez ...


Amusez-vous!

Autres conseils

Cela devrait aider http://drupal.org/node/221382

.

Faites défiler la liste jusqu'à ce commentaire pour la solution finale http://drupal.org/node/ 221382 # comment-755469 . La sortie HTML présente des problèmes qui y sont résolus.

Pour mémoire, au final, je viens d'utiliser le module menu_html et d'entrer les éléments de menu comme < span > élément de menu 1 < / span > dans les dialogues correspondants.

En fait, L'élément de menu est étendu & , et et le / span > dans l'un d'eux, car il a été développé et possède déjà une image d'arrière-plan. ensemble. Il en a maintenant 3!

Au moins mes coins courbes sur mes onglets fonctionnent maintenant dans IE. Une autre fois, IE absorbe 5/6 heures simplement parce qu’il ne prend pas correctement en charge CSS!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top