Mettre des images à la place des liens primaires[Résolu]

Catégories:

Bonsoir à tous,

Je voudrais remplacer mes liens primaires par des images exemple:’home’ par une image de 30x24 représentant la home. Mon problème c’est que je ne vois pas comment designer un template pour me permettre de mettre les images. Auriez-vous des suggestions ?? Merci d’avance.

#

Il existe peut être des modules pour le faire.

Sinon créé un bloc en créant ton menu à l’intérieur

#

Merci pour ton aide selinav ; Dans mon page.tpl.php j’avais defini ma zone de cette façon :

<?php if ($primary_menu or $secondary_menu): ?>
    <div id="nav" class="clear-block">
     <?php if ($primary_menu): print $primary_menu; endif; ?>
     <?php if ($secondary_menu): print $secondary_menu; endif; ?>
        </div> <!-- /nav -->
<?php endif; ?>

Seulement, quand je veux definir un template, il n’est pas pris. Du coup quand je mets le bloc menu dans une zone, mon template est pris en compte… Bref je passerais par cette méthode.

Souhiji

#

regarde du coté des modules http://drupal.org/project/modules ?text=image%20menu

Tiens moi au courant s’il y en a un pour faire des menus à partir d’image.

#

En effet la liste est exhaustive, mais ne disposant que de peu de temps, pour palier à mon soucis j’ai tout fais à la main, et ça marche très bien. Ne reste plus que la mise en place de ma div dans mon .tpl. Cela dis ta contribution me touche beaucoup et je t’en remercie grandement.

Souhiji

#

Tu peux faire ça en css.

Tu mets les ‘li’ de la liste en display:block ; un text-indent négatif suffisamment grand pour «virer» le texte et t’ajoutes ton image avec background-image.

#

Salut DavP et merci pour ton idée, seulement, mon menu est en ‘inline’ et le mettre en display:block, ne correspond pas à mes besoins. L’utilisation de text-indent aurais pu m’aider à decaler le text mais il n’en est rien et mes images s’affiges donc en background donc. Je pense qu’en trouvant déjà pourquoi mes liens primaires s’affichent malgré que je n’ai pas placé de bloc (bien qu’il soit definit dans mon page.tpl.php de la manière suivante :

<?php if ($primary_menu or $secondary_menu): ?>
   <div id="nav" class="clear-block">
   <?php if ($primary_menu): print $primary_menu; endif; ?>
   <?php if ($secondary_menu): print $secondary_menu; endif; ?>
   </div> <!-- /nav -->
<?php endif; ?>

Le problème c’est qu’aucun template que je defini n’est pris en compte et j’ignore pour quelle raison. Dans mon template j’ai fais une définition simpliste de la forme :

<?php
function theme_menu_item_link($link) {
if (empty(
$link['localized_options'])) {
  
$link['localized_options'] = array();
   }
   if(
$link['has_children']){
   return
t($link['title']);
    }
    return
l($link['title'], $link['href'], $link['localized_options']);
   }
?>

Souhiji

#

Tu mets les li en float:left ; avec display:block ; t’auras le même résultat visuel que du inline …

Comment penses-tu qu’on arrive à faire des menus graphiques horizontaux en css ou avec des sprites ?
Exactement avec cette méthode. ;-)

Pour le text-indent tu mets -3000px si tu vois toujours ton texte c’est que t’as un gros soucis et que les css sont pas interprétés …

#

Le texte à bien disparu DavP, mais mes images également du même coup ; Voilà ce que j’ai fais dans mon css :

#nav .primary-links li { float: left; display: block; text-indent:-3000px; list-style: none; margin: 0; padding: 0;}
#nav .primary-links .menu-1266 a{background-image:url(../images/connaitre/connaitre.png);}

Souhiji

#

C’est normal, tu appliques le text-indent au ‘li’ donc le ‘a’ en hérite et du coup tu décales tout …

Applique le text-indent au ‘a’ uniquement et le background tu le mets dans le ‘li’.

Ajoute un display:block au ‘a’ aussi pour être sûr que le bouton de ton menu soit comme un block.

NB : Pourquoi tu ne mets pas #nav .primary-links li a à la place de #nav .primary-links .menu-1266 a ?

#

En fait si je spécifie c’est tout simplement parce que la même image ne doit pas s’afficher. En fait j’ai 6liens (li) dans mon menu et tous sont identifiés par une classe particulière(menu-1266, menu-1267,…). Donc pour que les images différentes s’affichent bien derrière le bon lien je pense qu’il me faut bien spécifier. Tu ne crois pas. En tout cas merci encore, ça marge bien. J’ai du redimensionner les tailles de mes ‘a’ vue qu’ils sont en display:block.
Merci encore DavP

Souhiji

#

Ah oui excuse-moi !
Tu es obligé d’utiliser une image différente pour chaque li, j’avais oublié.
Dans ce cas, normal alors !

PS : Tu peux pour optimiser ton menu au niveau des images, utiliser la méthode des sprites ; en gros, dans une seule image ; tu as tous tes boutons côte à côte ainsi que les différents état (survol, actif, normal).
Et tu mets le bon background-position pour chaque lien et c’est bon. ;-)

#

Oui tu as vue juste ;) c’est d’ailleurs ce que j’ai fais :) Mille merci DavP. A présent il me faut régler mon dernier soucis et je pense que je serais pas mal.

Souhiji

Syndiquer le contenu