Accueil

Référence développeur · PrestaShop

Websource Locale pour PrestaShop — référence développeur

Hooks, emplacements, widget, bloc du builder, gabarits, variables CSS, témoin et réglage JSON du module Websource Locale.

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

Guide utilisateur

Cette extension existe aussi pour : WordPress

Vue d'ensemble

  • Module websourcelocale, espace de noms Websource\Locale\ (PSR-4 dans src/), implémente WidgetInterface.
  • Un réglage JSON par boutique, WSLC_SETTINGS (Settings\SettingsRepository::loadForShop(), saveForShop() ; normalisation par Settings\Settings::fromArray()).
  • Aucune table. Aucun appel externe.

Hooks

HookRôle
actionFrontControllerSetMediaEnregistre views/css/front.css et views/js/front.js (identifiant module-websourcelocale, priorité 150, script defer en bas de page) s'il existe au moins un emplacement ou si la bannière est activée.
Hooks d'affichage des emplacementsGreffés boutique par boutique par Settings\HookSynchronizer selon les emplacements enregistrés ; servis par __call() (hookDisplay…).
displayBeforeBodyClosingTagBannière de suggestion (gabarit suggestion.tpl).
actionWebsourceBuilderRegisterBlocksFournit le bloc « Langue et devise » (Builder\LocaleBlock, champ what) à Websource Builder.
actionObjectShopAddAfter, actionShopDataDuplicationDonne ses réglages et ses hooks à une boutique créée ou copiée.
actionWebsourceThemeExport, actionWebsourceThemeImportSection locale (version 1) du paquet de thème.

Emplacements (Settings\PlacementCatalog)

Un emplacement : {"position": "footer_locale", "hook": "displayWebsourceFooterLocale", "what": "auto", "visibility": "all"} ; 12 au plus.

PositionHookProposée dans l'écran Configurer
nav1displayNav1oui
nav2displayNav2oui
topbar_rightdisplayWebsourceTopbarRight (hook du thème Websource)non
topdisplayTopoui
under_headerdisplayNavFullWidthoui
mobile_menudisplayNavFullWidth, visibilité conseillée mobileoui
footer_localedisplayWebsourceFooterLocale (hook du thème Websource) ; valeur par défautnon
footerdisplayFooteroui
footer_beforedisplayFooterBeforeoui
footer_afterdisplayFooterAfteroui
customvaleur de hookoui

what : auto (selon la disposition), combined, language, currency. visibility : all, desktop, mobile.

WebsourceLocale::applyPlacementPosition(string $position, int $shopId = 0): bool remplace le premier emplacement par nav1, topbar_right ou footer_locale et resynchronise les hooks ; c'est la méthode appelée par l'écran En-tête et pied de page de Websource Builder.

À savoir : positionLabels() (liste du formulaire d'administration) ne contient ni topbar_right ni footer_locale. Une ligne portant l'une de ces positions est donc affichée « (aucun) » et supprimée à l'enregistrement du formulaire (constaté sur la boutique de test).

Widget

{widget name='websourcelocale'}
{widget name='websourcelocale' what='language'}
{widget name='websourcelocale' what='currency'}
{widget name='websourcelocale' what='combined'}

Sans what et avec un nom de hook, le widget rend les emplacements enregistrés pour ce hook. getWidgetVariables() renvoie un tableau vide. En PHP : WebsourceLocale::renderSelector(string $what = 'auto', string $visibility = 'all', bool $forceAssets = false): string.

Gabarits et variables Smarty

  • views/templates/hook/selector.tpl, surchargeable dans themes/<thème>/modules/websourcelocale/views/templates/hook/selector.tpl.
  • views/templates/hook/suggestion.tpl.

Variables d'un bloc de sélecteur (Front\ViewBuilder) : uid, kind, visibility, align (start ou end), languages, currencies, language_title, currency_title, title, close, trigger_flag, trigger_label, trigger_small, show_flags, style_desktop, style_mobile, globe, language_count, currency_count, dir.

Adresses générées : langue par Link::getLanguageLink() avec attribut hreflang ; devise par lien ?SubmitCurrency=1&id_currency=<id> (Locale\CurrencyUrlBuilder).

Marquage HTML et CSS

Classes : .wslc (+ .wslc--combined, .wslc--up quand le menu s'ouvre vers le haut : pied de page ou place insuffisante dessous), .wslc__toggle, .wslc__label, .wslc__sub, .wslc__caret, .wslc__panel, .wslc__head, .wslc__title, .wslc__close, .wslc__group, .wslc__group-title, .wslc__list, .wslc__option (+ .is-current), .wslc__flag, .wslc__code, .wslc__backdrop, .wslc__sr.

Attributs lus par front.js : data-wslc, data-wslc-close, data-wslc-ready, data-wslc-suggest, data-wslc-text, data-wslc-accept, data-wslc-dismiss.

Variables CSS : --wslc-accent, --wslc-ink, --wslc-bg, --wslc-line, --wslc-radius, --wslc-font, --wslc-tint. Avec « Reprendre le design du thème », elles reprennent --color-* et --radius-* du thème ; sinon Render\StyleBuilder les émet à partir du réglage design.

Témoin

wslc_dismissed = 1, SameSite=Lax, durée suggest_days jours, posé par front.js quand le visiteur répond à la bannière. La langue du navigateur est lue côté navigateur et n'est jamais envoyée au serveur.

Clés de WSLC_SETTINGS

CléValeurs (défaut)
arrangementcombined (défaut), separate
style_desktop, style_mobiledropdown (défaut ordinateur), inline, modal (défaut mobile)
breakpoint320 à 1920 (768)
show_flags, hide_if_singlebooléens (vrais)
language_labelnative (défaut), iso, none
currency_labelboth (défaut), symbol, code
sort_languages, sort_currenciesshop (défaut), alpha, default_first
exclude_languages, exclude_currencieslistes d'identifiants
use_theme_designbooléen (vrai)
designaccent, text, background, border (hexadécimal), radius (0 à 32, 12), font_size (small, medium, large)
suggest_enabled (faux), suggest_languages, suggest_currencies (vrais), suggest_geoip (faux), suggest_days (1 à 365, 30), suggest_position (bottom, top)bannière
placementsliste d'emplacements
textscombined_label, language_title, currency_title, close : tableaux par identifiant de langue

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

ThemePackage\ThemePackage::export() produit les réglages avec les langues et devises exclues converties en codes ISO et les textes indexés par code ISO de langue. À l'import, les données passent par Settings::fromArray() ; modes replace et merge ; rien n'est écrit en dry_run.

Services

WebsourceLocale::services(): Websource\Locale\Services (réglages, identifiant de boutique), shopScope(): array, defaultTexts(): array, upgradeShops(): bool.

Tests fournis

php modules/websourcelocale/tests/run.php (logique pure, sans PrestaShop).