Accueil

Référence développeur · PrestaShop

Websource Mega Menu pour PrestaShop — référence développeur

Hooks, widget, réglages d'un menu, balisage et variables CSS, cache, actions AJAX, table et format d'export du module Websource Mega Menu.

Version 1.5.0 · PrestaShop 1.7.7 à 9.x, PHP 7.1+, thème Websource Prestashop Theme (conseillé) · Mis à jour le 09/10/2026

Guide utilisateur

Cette extension existe aussi pour : WordPress

Vue d'ensemble

  • Module websourcemegamenu, espace de noms Websource\MegaMenu\ (PSR-4 dans src/), implémente WidgetInterface. Contrôleur d'administration AdminWebsourceMegaMenu (Apparence > Websource Mega Menu).
  • Menu/ : catalogue des types (NodeCatalog), nettoyage (FieldSanitizer, TreeSanitizer, MenuSettings, ColorSanitizer, SvgSanitizer), bibliothèque d'icônes (IconLibrary).
  • Source/ : une source par famille (CategorySource, CmsSource, BrandSource, ProductSource, SupplierSource, PageSource), réunies dans SourceRegistry ; interface SourceInterface.
  • Resolve/TreeResolver transforme l'arbre enregistré (JSON) en arbre prêt à afficher ; Render/MenuRenderer produit le balisage ; Front/MenuPresenter ajoute le cache ; Render/JsonLdBuilder émet un SiteNavigationElement (une balise application/ld+json par menu rendu).

Hooks greffés

HookRôle
displayNavFullWidth, displayTop, displayFooterRendu des menus en ligne dont le réglage hook vaut ce hook.
actionFrontControllerSetMediaCharge views/css/menu.css seulement si un menu est en ligne, et views/js/menu.js seulement pour les menus en barre.
actionShopDataDuplicationCopie des menus lors de la duplication d'une boutique.
actionObject{Category,CMS,Manufacturer,Product}{Add,Update,Delete}After (objets surveillés : WATCHED_OBJECTS)Invalidation du cache.
actionWebsourceThemeExport, actionWebsourceThemeImportSection megamenu (version 1) du paquet de thème.

Le module n'expose pas de hook personnalisé.

Widget

{widget name='websourcemegamenu' menu=3}
{widget name='websourcemegamenu' menu='Menu principal'}

menu accepte l'identifiant ou le nom (insensible à la casse) d'un menu en ligne. Sans menu, le widget rend les menus dont l'emplacement correspond au hook d'appel. getWidgetVariables() renvoie ['wsmm_html' => '…'] ; le gabarit est module:websourcemegamenu/views/templates/hook/menu.tpl. L'emplacement « Je le place moi-même » correspond à la valeur widget du réglage hook (MenuSettings::HOOK_WIDGET).

Réglages d'un menu (Menu\MenuSettings)

Exemple constaté sur la boutique de test : {"hook":"displayNavFullWidth","layout":"bar","theme":"light","panel":"auto","align":"start","mobile":"push","aria_label":{"1":"Menu principal"},"max_depth":4}.

CléValeurs (défaut en premier)
hookdisplayNavFullWidth, displayTop, displayFooter, widget
layoutbar, columns (forcé à columns quand hook = displayFooter, à bar sinon)
themelight, dark, brand
panelauto, content, full
alignstart, center
mobilepush, accordion
aria_labeltableau par identifiant de langue
max_depth4 ; de 2 à 6

Options d'un élément

Icône : mode both, icon, text ; place before, after ; taille xs, sm, md, lg, xl. Pastille : position float, inline ; forme pill, rounded, square ; couleurs prédéfinies ou personnalisées (hexadécimal à 3, 4, 6 ou 8 chiffres, rgb(), rgba(), validés côté serveur). Position dans la barre : start, center, end (marges automatiques de flexbox). Visibilité : all, desktop, mobile. Liens libres : http, https, mailto, tel ou adresse relative, une adresse par langue ; options nouvel onglet (rel="noopener") et nofollow.

Balisage et CSS

Conteneur : <nav class="wsmm wsmm--bar wsmm--theme-light wsmm--panel-auto wsmm--align-start wsmm--m-push"> (classes dérivées des réglages ; is-ready est ajouté par menu.js). Éléments : .wsmm__item (+ .wsmm__item--has-panel, .is-open à l'ouverture), .wsmm__toggle (bouton avec aria-expanded), .wsmm__panel.

Barre horizontale à partir de 992 px ; tiroir ou accordéon en dessous.

Variables CSS propres : --wsmm-bg, --wsmm-fg, --wsmm-accent, --wsmm-soft, --wsmm-line, --wsmm-pbg (fond des panneaux), --wsmm-max (largeur maximale), --wsmm-push-w (largeur du tiroir), --wsmm-ic (taille d'icône), --wsmm-emo, --wsmm-bd-bg, --wsmm-bd-fg (pastille).

Variables du thème lues, avec valeurs de repli : --color-brand-50, --color-brand-600, --color-brand-700, --color-brand-fill, --color-brand-on, --color-accent-600, --color-accent-fill, --color-accent-on, --color-ink, --color-line, --color-surface, --container-max, --radius-xl, --radius-2xl, --wst-card-shadow.

Cache (Cache\MenuCache)

APCu si disponible, sinon mémoire de la requête ; durée 900 secondes ; clé par menu, langue, boutique et groupe de clients ; invalidation par numéro de version (mise en ligne, modification d'un objet surveillé). WebsourceMegaMenu::createCache()->forget() vide tout.

Contrôleur AdminWebsourceMegaMenu

Écrans : liste (par défaut), &edit=<id> (éditeur). Actions AJAX (ajax=1&action=<nom>, jeton du back-office, réponses JSON) :

ActionParamètresEffet
createname, hook (+ option d'exemple)Crée un menu.
syncid + brouillon (réglages et arbre)Sauvegarde automatique.
publishidCopie le brouillon en version en ligne.
discardidAbandonne le brouillon.
toggleid, activeAffiche ou masque le menu.
delete, duplicateidSupprime ; duplique (copie hors ligne).
copyToShopid, id_shopMultiboutique : copie le brouillon, hors ligne, dans une autre boutique.
searchProductsqRecherche de produits pour l'éditeur.
uploadfichierImage d'un visuel (5 Mo), stockée dans uploads/images/.
uploadIconfichierIcône (1 Mo ; SVG réécrit après nettoyage par liste blanche, PNG, JPG, WebP, GIF, AVIF).

Table {prefix}websourcemegamenu_menu

ColonneContenu
id_menu, id_shopIdentifiant, boutique.
nameNom interne.
active1 = affiché.
is_published1 = une version en ligne existe.
settings_draft, settings_liveRéglages JSON, brouillon et en ligne.
tree_draft, tree_liveArbre JSON, brouillon et en ligne.
date_add, date_updDates.

Export / import de thème (section megamenu, version 1)

Menus exportés avec brouillon et version en ligne, réglages et arbre complet ; textes indexés par code ISO de langue ; catégories, pages, marques et produits référencés par clé stable (jamais par identifiant) ; images en adresse absolue. L'import repasse par MenuSettings et TreeSanitizer.

Méthodes publiques utiles

WebsourceMegaMenu::createPresenter(): MenuPresenter, createCache(): MenuCache, renderWidget(), getWidgetVariables().

Traductions

translations/fr.php, translations/en.php ; régénération par php tools/build-translations.php depuis tools/en.php.