[RÉsolu] ajouter une balise <span> entre les balises <a> de Primary Links

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour à tous,

j'aimerais pouvoir ajouter une balise span entre les balises a de mon menu Primary Links ... ?

Du genre :
<a><span>PrimaryLinks_items1</span></a>

Je croayais être en mesure de le faire en éditant la page menu.inc, mais je saisis pas encore très bien la logique de création de liens.

Quelqu'un aurait une idée ?

Merci et bonne fin de journée

Version de Drupal : 

Tu peux le faire en modifiant la fonction theme_links du fichier theme_inc
Il est cependant préférable de la redéfinir pour ne pas toucher au code du noyau Drupal.
Par exemple, dans le fichier template.php dans le répertoire de ton thème (créé le fichier s'il n'existe pas) tu peux ajouter la fonction :

<?php
function phptemplate_links($links, $attributes){
   
$_links = theme_links($links, $attributes);
    if (
strpos($attributes['class'], 'primary-links') !== false) {
    
$_links = preg_replace('#<a (.*?)>(.*?)</a>#','<a \1><span>\2</span></a>',$_links);
 }
  return
$_links;
}
?>

pour redéfinir theme_links

Bonne journée,

Bonjour Didier,

comme tu me l'as recommandé j'ai créé une page template.php dans le répertoire de mon thème et j'y ai intégré le code ci-haut ...

Mais ça ne fonctionne pas ... aucune balise span ne s'intègre à mon menu :/ ... Ai-je brulé une étape ?

Merci et bonne journée

yHugo

Bonsoir yHugo,

Ben... chez moi ça marche... (avec Drupal 5.1)
J'ai ajouté la fonction dans le thème Garland. Le fichier template.php existe déjà pour ce thème (dans le répertoire thèmes/garland).
Essaye en activant (provisoirement) ce thème (qui est le thème par défaut) et en modifiant le fichier template.php pour voir si ca marche.
Tu peux aussi vérifier dans le fichier page.tpl.php de ton thème où apparaît primary_links.
Normalement, c'est dans une ligne du type:

<?php print theme('links', $primary_links, array('class' => 'links primary-links')) ?>

et normalement ce code devrait appeler la fonction que tu as intégrée.

Bon courage,

Ok ... ça fonctionne ...

dans page.tpl.php la ligne ressemblait plutôt à ça :

<?php
 
print theme('links', $primary_links, array('class' =>'links', 'id' => 'navlist'))
?>

...

Je l'ai donc remplacé par celle que tu notas ci-haut ...

merci beaucoup !