Submitted by yhugo on
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
Tu peux le faire en
Permalien Soumis par did75 le 16 Juillet, 2007 - 12:54
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
Permalien Soumis par yhugo le 16 Juillet, 2007 - 18:35
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
Permalien Soumis par did75 le 16 Juillet, 2007 - 20:57
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
Permalien Soumis par yhugo le 16 Juillet, 2007 - 21:40
Ok ... ça fonctionne ...
dans page.tpl.php la ligne ressemblait plutôt à ça :
...
Je l'ai donc remplacé par celle que tu notas ci-haut ...
merci beaucoup !