Un menu latéral flottant fixe peut être un moyen efficace d’attirer l’oeil de vos visiteurs sur un service ou un produit particulier que vous proposez et améliorer ainsi votre taux de conversion.
Nous allons voir ici comment ajouter un menu s’affichant au passage de la souris et renvoyant vers les pages de votre choix comme sur l’exemple ci-dessous :
Allez, c’est parti !
1re étape : créez le menu en HTML
Nous allons créer le menu à mains nues en HTML.
N’ayez pas peur, ça n’est pas très compliqué.
Voici le code utilisé pour le mien :
Quelques explications sur ce code si vous n’avez pas de notions de HTML :
- La balise <nav></nav> permet de définir un élément comme menu de navigation
- Les balises <ul></ul> et <li></li> de créer une liste à puces nous permettant de créer la liste des items de notre menu
- la balise <i></i> permet d’intégrer les icônes de la bibliothèque Font Awesome. Si elle n’est pas intégrée sur votre site, je vous explique comment faire dans cet article qui vous montre pas à pas comment ajouter des icônes à vos menus. Vous trouverez la liste de tout ceux proposés par Font Awesome sur leur site.
- la balise <a href=”#”></a> permet d’ajouter les liens aux éléments du menu. Pensez à insérer le lien de vos pages dans le code à la place du # pour que tout soit fonctionnel une fois terminé.
Nous avons donc ici 3 items de menu différents, libre à vous d’en ajouter d’autres en suivant le même schéma si vous le souhaitez.
2e étape : utilisez un hook de Divi pour afficher le menu sur toutes les pages
Nous avons le code de notre menu, qui est pour l’instant très simple, mais nous souhaitons l’afficher sur toutes les pages de notre site.
Le plus simple est donc d’utiliser l’un des hooks proposés par Divi pour le faire. De ce fait, il sera ajouté automatiquement au même endroit partout.
Si vous souhaitez en savoir plus sur ce que sont les hooks, vous pouvez vous rendre sur la documentation de WordPress.
Pour connaitre la liste de tous les hooks de Divi, je vous invite à parcourir la documentation Développeur.
Nous allons utiliser ici le hook et_before_main_content permettant d’injecter du code avant le contenu de toutes les pages.
Il va vous falloir ici utiliser un thème enfant puisque le code que nous allons ajouter sera situé dans le fichier functions.php.
Si vous n’en avez pas, je vous invite à télécharger le nôtre.
Copiez-collez le code suivant dans le fichier functions.php de votre thème enfant :
Il reprend exactement le HTML plus haut en l’englobant dans la fonction add_side_menu().
Ceci nous permet de l’injecter partout sur notre site grâce au hook et_before_main_content.
Voila à quoi ressemble notre menu pour le moment :
On ne va pas se mentir, c’est pour l’instant très moche.
On ne va pas se décourager pour autant, nous allons maintenant l’habiller un peu avec du CSS pour qu’il ressemble enfin à quelque chose.
3e étape : un peu de CSS pour améliorer l’apparence de notre menu
Bon, nous avons maintenant notre menu fonctionnel sur toutes les pages de notre site, mais il reste quand même assez moche.
Nous allons donc lui donner un coté un peu plus design en utilisant quelques lignes de CSS.
Voici le code utilisé pour l’exemple avec les explications d’utilisation des propriétés :
Copiez/collez ce code dans le fichier style.css de votre thème enfant et modifiez éventuellement les tailles ou couleurs suivant le design de votre site.
Et voila, votre menu devrait maintenant être pleinement fonctionnel.
Conclusion
Pas mal de code, notamment en CSS, mais rien de bien méchant pour arriver à une fonctionnalité plutôt sympa et originale.
Je vous invite à vraiment essayer de voir à quoi servent les propriétés utilisées et les modifier pour comprendre leur fonctionnement et vous les approprier.
Maintenant que vous avez lu l’article, je peux vous dire qu’il existe le plugin Float Menu qui permet d’arriver au même résultat sans écrire une ligne de code. 😉
N’hésitez pas à nous montrer vos adaptations en commentaires.
Top. Hate d’essayer ça 🙂 Merci pour tous ces tutos !
Super ce tuto, une question.
comment faire pour avoir ce menu que sur certaine page du site.
Merci Julien
Tu places le contenu de ta fonction entre :
if( is_page( array( ‘about-us’, ‘contact’, ‘management’ ) ) {
// ici le contenu
}
En changeant bien sûr le nom des pages concernées.
Pour en savoir plus.
Merci julien au top !!!!!!
Salut,
Encore Moi, pourquoi a ton avis je n’ai pas les icône de panier et autres qui s’affiche sur le menu flottant ?
Manque t’il quelques chose dans mon thème enfant.
Salut, tu as chargé la librairie Font Awesome?
j’ai mis ça dans mon function.php
// AJOUT DES ICONES FONT AWESOME
function dc_load_fontawesome() {
wp_enqueue_style( ‘font-awesome’, ‘//maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css’, null, ‘4.7.0’ );
}
add_action(‘wp_enqueue_scripts’, ‘dc_load_fontawesome’);
Comme ça ça a l’air bon. Tu as vidé ton cache?
oui, voici l’url du site en question https://happyo.net dis moi si chez toi tu les as.
Merci
info sur les icônes fontawesone
Pour que les icône apparaissent il a fallut que je modifie les class du code comme ci dessous
Contact
Réserver
En savoir plus
est ce normal a ton avis Julien
désolé de vous solliciter aussi souvent mais je ne comprend pas j’ai ajouter le code avec le test de page comme ma l’a indique Julien mais cela mets le site en erreur 500
voici le code
function add_side_menu() {
if( is_page( array( 13, ‘contacts’, ‘management’ ) ) {
?>
Une question !
<?php
}
}
add_action('et_before_main_content','add_side_menu');
Merci de votre aide.
Salut, tu utilises des icônes de Font Awesome 5 non?
Je pense qu’il doit te manquer un point virgule.
Tu as résolu l’erreur?
pour font c’est 4.7.0
et non je n’ai pas résolu mon problème
voici mon dernier code qui ne fonctionne toujours pas
unction add_side_menu() {
console(‘test’);
if( is_page( array( 13, ‘contacts’, ‘management’ ) ) {
$Menu =’
Une question !
‘;
echo $Menu;
}
}
add_action(‘et_before_main_content’,’add_side_menu’);
Bonjour,
Je m’en suis sorti en testant Id de la page avec un get_the_id()
Merci
Bonjour,
Question toute bête, ou placer le code html ?
Utiliser les liens personnalisés dans apparence, fonctionne-t-il ?
Au plaisir de vous lire 😉
Heli
Bonjour,
comme je l’indique, c’est dans le fichier functions.php de ton thème enfant 😉
Bonjour ,
Merci pour ce super tuto, petite question bête peut être, est il possible que le lien sur le quel les gens cliquent s’ouvre dans une nouvelle fenêtre et non dans la même fenêtre, moi je l’ai utilisé pour mettre les réseaux sociaux, du coup ça quitte ma page..
Et pourquoi pas l’avoir dans un pop up sur cette même page carrément ??
Merci à vous, cordialement.
Et je voudrais aussi le cacher sur mobile comment faire svp ?
Bonjour, pour que le lien s’ouvre dans un nouvel onglet il suffit d’ajouter target=« _blank » dans le lien comme ceci
Bonjour, tu peux ajouter dans ton CSS personnalisé:
@media only screen and (max-width: 640px) {
.menu-flottant {
display: none;
}
}
Bonjour,
Lorsque j’ai ajouté cette sidebar, j’ai un problème qui est apparu sur ma version mobile. Lorsque je scroll vers la gauche, une “zone morte” apparaît à droite de mon écran. C’est à dire que le site se décale vers la gauche pour laisser place un aplat vertical blanc d’une quarantaine de pixels de large. Quelqu’un aurait-il rencontré ce problème et trouvé une solution ?
Hello, tu peux nous donner l’URL de ton site stp?
Bonjour
Je viens de découvrir votre site, super, je vais tout regarder avec intérêt.
Aujourd’hui je suis intéressé par le menu.
J’ai repris votre code, et l’ai testé sur 2 sites.
Le code html n’est pas inséré dan sla page, comme si le hook n’existait pas (ce qui ne doit pas être le cas).
J’ai la dernière version de DIVI 3.21.3
Comment vérifier que la fonction dans ‘functions’ est bien prise en compte ?
Bonjour, tu peux me copier le code que tu as mis dans ton fichier stp?
bonjour Julien
mon code:
// AJOUT DES ICONES FONT AWESOME
function dc_load_fontawesome() {
wp_enqueue_style( ‘font-awesome’, ‘//maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css’, null, ‘4.7.0’ );
}
add_action(‘wp_enqueue_scripts’, ‘dc_load_fontawesome’);
function add_side_menu() {?>
Acheter
Réserver
En savoir plus
dans le style.css le css que tu as fourni.
même si le css n’était pas présent, comme sur ton exemple, on devrait voir les 3 items du menu.
En regardant le source de la page affiché, rien n’est inséré.
j’ai l’impression que le hook n’est pas pris en compte. Mon thème est en 3.21.4.
Hello, tu intègres les icônes de quelle manière ensuite?
Hello ! Super tuto comme d’habitude !
Mais malheureusement, pour moi l’icône ne s’affiche pas.. Ca fait un petit ? et ! qui clignotent.
Je suis sur mon sous domaine le temps de développer le site : https://client.avacharpy.fr/
Pourrais-tu m’aider ?
Merciii !
As-tu suivi ce tuto pour savoir comment utiliser les icones de Font Awesome ?
Hello Pierre ! Oui oui j’ai tout bien fait comme vous dites (normalement).
Bon j’allais te copier/coller tout mon code mais j’ai quand même testé avec une autre icône de Fontawesome avant… Et miracle, ça marche !
Celle que j’ai sélectionné de base devait être “défectueuse” haha!
Merci en tout cas, j’utilise pas mal de vos tutos sur ce projet : #fannumber1
Belle journée,
Ava
Hello.
Merci pour ce super tuto ! Quel script puis-je rajouter pour que le menu n’apparaisse qu’au scroll ? (je voudrais éviter de l’avoir sur le header plein écran).
Merci d’avance !
Julie
Bonjour, il faudrait ajouter du JS pour faire ce genre d’animation.
Bonjour,
j’ai installé le menu sur un de mes sites et il est super.
cependant il faudrait le redimensionner pour mobile car il masque une partie des textes. Merci
Il te suffit de modifier la valeur de la propriété width en CSS.
Le code fourni à la 3e étape du tuto est commenté ligne par ligne pour s’y retrouver facilement même si on ne maitrise pas les CSS. 😉
Bonjour Pierre et merci pour cette réponse,
En fait je me suis mal exprimé.
Mon soucis est la taille du menu sur le mobile (pas des items lorsque l’on passe la souris) En fait sur le mobile, il faudrait réduire la taille des carrés où s’affichent les icônes car ils masquent une partie du texte de mes pages. je pense que la fonction width gère la taille du texte déployé ? Merci pour le coup de main. cldt
Bonjour, Je débute et j’ai réussi à afficher ce menu et à en changer les textes et couleurs. Par contre, les icônes n’apparaissent pas (des rectangles à la place) et je ne trouve pas où définir les liens ?
Les réponses à tes 2 questions se trouvent dans la première étape du tutoriel. 😉
Si les icones sont manquants c’est que tu n’as pas bien installé la police FontAwesome.
Bonjour, J’utilise WPML pour la traduction de mon site.
Quelle technique me conseilleriez-vous pour traduire ce menu flottant selon la langue choisie ?
merci !
Bonjour, tu peux utiliser l’addon WPML String Translation pour le faire. Je pense que ça fonctionne.
Bonjour,
Merci pour ce tutoriel, mais une fois intégrer je remarque quelques soucis que je n’arrive pas a corriger via le css pourriez vous m’aider ?
j’aimerai savoir si je peut un peut plus centré les icônes je trouve que sa fait vide
et ensuite le menu déborde légèrement du site
en gros j’arrive pas à avoir le même rendu que sur votre site de démonstration
Merci de votre aide
mon site : https://deltacoputer.fr
Hello, ton URL ne marche pas?
Bonjour et merci pour ce tuto génial et facile à suivre !! Petite question, j’essaie en vain de remplacer les icône Font Awesome par ceux de la bibliothèque Divi que je préfère. Par example, j’ai remplacé Acheter par Acheter mais clairement c’est faux car aucune icône n’apparaît. Comment dois-je procéder ? Merci d’avance.
Rebonjour. Je souhaiterais aussi savoir comment faire en sorte que le menu n’apparaîsse qu’après mon header. Disons après avoir scrollé environ 30% de la page. Merci d’avance !
Bonjour, c’est dans ce cas un peu différent car les icônes Divi ne sont pas des images mais une police personnalisée. Il faut donc trouver le code de l’icône qui t’intéresse ici: https://dividezigns.com/divi-icon-codes/
Bonjour, tu veux ajouter un effet d’apparition c’est bien ça?
Bonjour !
Je sais que ce tuto est fais depuis un petit moment, mais je viens de l’utiliser; pour moi ça marche parfaitement par contre quand je laisse actif mon thème enfant je ne peux plus modifier mes modules divi (par exemple pour importer de nouvelle image dans un module), de plus les sauvegardes ne se font plus; il indique ceci en gros : “…. augmenter les variables php… (je peux envoyer un screen si il faut )” enfin un long message d’erreur, du coup je suis oblige de désactiver le thème enfant pour pouvoir retravailler dessus.
Avez vous eu ce genre de problème ?
Merci beaucoup pour votre travail, cordialement
Bonjour, cela n’a rien à voir avec le thème enfant ou le code de cet article, il s’agit plutôt d’une limitation de la mémoire PHP de ton site/serveur. Tu peux contacter ton hébergeur pour qu’il l’augmente. Tu peux lui demander de mettre 512Mo minimum 😉
Bonjour, merci pour ce tuto ! Génial !
Comment peut-on déactiver l’affichage sur mobile car les items masquent des paries de texte ?
merci d’avance 🙂
La réponse a déjà été donnée dans les commentaires. 😉
@media only screen and (max-width: 640px) {
.menu-flottant {
display: none;
}
}
Merci beaucoup. Désolée, j’avais pourtant lu les commentaires avant, gloups… 😳