Hooks utilisés
| Hook | Rôle |
|---|---|
displayBanner | Rendu du bandeau. Le thème Websource l'appelle en tête de templates/_partials/header.tpl ; sur un autre thème, ajouter {hook h='displayBanner'} au début de l'en-tête. |
actionFrontControllerSetMedia | views/css/front.css et views/js/front.js, seulement si le bandeau s'affiche. |
actionObjectShopAddAfter | Greffe les hooks pour une boutique créée après l'installation. |
actionWebsourceThemeExport, actionWebsourceThemeImport | Section bandeau (version 1) du paquet de thème : réglages, messages, textes par code ISO, images par URL. |
Réglages
Clé WSBD_SETTINGS (Configuration, par boutique, groupe ou valeur par défaut), JSON assaini par Websource\Bandeau\Settings\BandeauSettings::sanitize() :
{
"enabled": 1, "preset": "sobre", "follow_theme": 1, "sticky": 0,
"align": "center", "font_size": 14, "height": 40, "font": "inherit", "weight": 500,
"motion": "fade", "speed": 6, "marquee_speed": 5, "pause_hover": 1,
"pages": ["all"], "devices": ["desktop", "mobile"], "start": "", "end": "",
"countdown": {"enabled": 0, "end": "", "label": {}, "hide_banner": 1},
"dismiss": {"enabled": 1, "days": 7},
"colors": {"mode": "solid", "angle": 90, "bg": "token:brand-700", "bg2": "token:brand-500", "text": "#ffffff", "icon": "token:accent-400", "cta_bg": "token:accent-400", "cta_text": "token:accent-on", "cta_border": "#00000000", "border": "#00000000", "border_w": 0, "cta_radius": 999, "close": "#ffffff"},
"messages": [{"enabled": 1, "text": {"1": "**Livraison offerte** dès 60 €"}, "icon": "truck", "image": "", "link": {"1": "/promotions"}, "cta": {"1": "J'en profite"}, "new_tab": 0}]
}
| Champ | Valeurs |
|---|---|
preset | sobre, accent, degrade, promo, contour, sombre |
motion | static, fade, slide, marquee |
align | center, left, right |
font | inherit, system, serif, mono |
pages | all, home, category, product, cart, other |
devices | desktop, mobile (seuil 768 px) |
messages | 5 au plus, texte de 220 caractères, bouton de 40 caractères |
icon | truck, gift, tag, percent, clock, star, shield, heart, bell, megaphone, check, phone, mail, sparkles, fire, info, card, return, leaf |
start, end, countdown.end | AAAA-MM-JJTHH:MM, heure de la boutique |
La clé WSB_SETTINGS de la version 1.0.0 est migrée par Settings\LegacyMigration (elle appartient aussi à websourcebuilder et n'est jamais supprimée).
Couleurs
Formats acceptés (expression régulière stricte, sinon valeur précédente conservée) : #rgb, #rrggbb, #rrggbbaa, rgb(), rgba(), transparent, jeton du thème token:brand-600 ou token:brand-600@80 (opacité en %).
Jetons : brand-50 à brand-900, accent-50 à accent-900, ink, surface, page, line, brand-on, accent-on. Un jeton devient var(--color-brand-600,#2563eb) : repli si le thème ne définit pas la variable. Classes : Color\Color, Color\Palette, Color\Contrast.
Liens
Url\UrlValidator accepte un chemin interne /…, une ancre #…, https://, http://, mailto:, tel: ; refuse javascript:, data: et //hôte. Les liens externes reçoivent target="_blank" et rel="noopener noreferrer".
Formulaire de configuration
POST multipart/form-data sur index.php?controller=AdminModules&configure=websourcebandeau&token=…, bouton submitWsbd, traité par Admin\SettingsFormHandler.
Champs : enabled, preset, follow_theme, sticky, align, font_size, height, font, weight, motion, speed, marquee_speed, pause_hover, pages[], devices[], start, end, cd_enabled, cd_end, cd_label[id_lang], cd_hide, dismiss_enabled, dismiss_days, col[mode], col[angle], col[cta_radius], col[border_w], col[<clé couleur>], msg[i][enabled], msg[i][text][id_lang], msg[i][link][id_lang], msg[i][cta][id_lang], msg[i][new_tab], msg[i][icon], msg[i][remove_image], fichier msg_image_i.
Images : PNG, JPEG, GIF, WebP, 300 Ko, nom aléatoire, dossier modules/websourcebandeau/uploads/ (exécution de scripts interdite par .htaccess).
Fermeture
Cookie wsbd_<id boutique>, valeur = empreinte du contenu (data-hash), durée dismiss.days jours (0 = session). Lu côté serveur (le bandeau n'est pas rendu) et re-vérifié en JavaScript pour les pages servies depuis un cache. Une modification du contenu change l'empreinte : le bandeau réapparaît.
Template et CSS
Template views/templates/hook/bandeau.tpl, surchargeable dans themes/<theme>/modules/websourcebandeau/views/templates/hook/. Variable Smarty $wsbd : preset, motion, align, sticky, dismiss, dismiss_days, style, speed, marquee_speed, pause_hover, hash, cookie, messages[] (html, icon_svg, image, url, cta, new_tab, rel), countdown (iso, label, parts).
Élément racine #wsbd.wsbd (role="region", aria-label="Annonces"), classes wsbd--<preset>, wsbd--m-<motion>, wsbd--a-<align>, wsbd--sticky ; éléments .wsbd__bar, .wsbd__msg (is-active), .wsbd__link, .wsbd__cta, .wsbd__cd, .wsbd__u, .wsbd__pause, .wsbd__close.
| Variable CSS | Rôle |
|---|---|
--wsbd-bg, --wsbd-text, --wsbd-icon | Fond (couleur ou dégradé), texte, icônes. |
--wsbd-cta-bg, --wsbd-cta-text, --wsbd-cta-border, --wsbd-cta-radius | Bouton. |
--wsbd-border, --wsbd-border-w, --wsbd-close | Bordure basse, croix. |
--wsbd-fs, --wsbd-h, --wsbd-font, --wsbd-weight | Taille, hauteur minimale, police, graisse. |
--wsbd-offset | Place réservée en mode fixe. |
Limite connue : le mode fixe utilise position: fixed ; si un parent reçoit une transform, le bandeau suit ce parent.
Tests
php tests/run.php (autonome), php tests/integration.php (instance PrestaShop avec le module installé).