Vue d'ensemble
- Module
websourceaccountblock, espace de nomsWebsource\AccountBlock\(PSR-4 danssrc/), implémenteWidgetInterface. - Un réglage JSON
WSAB_SETTINGS, propre à chaque boutique (repli : groupe, puis valeur globale) :Settings\SettingsRepository::load(), normalisation parSettings\Settings. - Aucune table, aucun cache : rendu à chaque requête.
Hooks greffés
| Hook | Rôle |
|---|---|
displayNav2 | Rendu du bloc (équivaut à renderWidget('displayNav2')). |
actionFrontControllerSetMedia | Charge les fichiers nécessaires aux modes actifs (voir ci-dessous). |
actionWebsourceThemeExport, actionWebsourceThemeImport | Participation au paquet de thème de Websource Theme Config (ThemePackage\ThemePackage). |
Fichiers chargés
Identifiants websourceaccountblock-<fichier> ; CSS en priorité 150 (front) et 151 (push, floating) ; scripts en bas de page.
| Fichier | Chargé quand |
|---|---|
views/css/front.css | Au moins un mode actif (autre que none). |
views/css/push.css, views/css/floating.css | Le mode correspondant est choisi (ordinateur ou mobile). |
views/js/front.js | Menu flottant actif, ou client connecté avec menu déroulant ou push menu. Un visiteur sans menu flottant ne reçoit aucun script. |
views/js/push.js | Push menu et client connecté. |
views/js/floating.js | Menu flottant. |
Widget
{widget name='websourceaccountblock'}
Gabarit : views/templates/hook/account.tpl. getWidgetVariables() renvoie ['wsab' => $vue], construite par Front\AccountViewBuilder::build(Settings $réglages, int $idLang, ?array $client) ($client = firstname, lastname ou null), complétée par uid (compteur d'instance, pour des identifiants HTML uniques). Les adresses sont produites par Front\LinkUrlResolver (objet Link, langue et boutique du contexte) ; les initiales par Front\CustomerInitials.
Balisage constaté : racine .wsab-root, variantes .wsab-variant, bloc .wsab (.wsab--guest pour un visiteur), bouton .wsab__toggle, lien .wsab__link.
Clés de WSAB_SETTINGS
| Clé | Valeurs (défaut en premier) |
|---|---|
mode_desktop, mode_mobile | dropdown, simple, push, floating, none |
breakpoint | 768 ; de 320 à 1920 |
display | name (initiales + prénom), icon (initiales seules) |
push_side | right, left |
push_target | sélecteur CSS de la partie de page à pousser, main par défaut (repli sur body) |
floating_side | right, left |
floating_visibility | logged, always |
floating_offset | 0 ; de 0 à 300 px |
order | ordre des liens |
enabled | liens actifs |
labels | textes par identifiant de langue : clés des liens + login, register, button, close |
Clés de liens (Settings\LinkCatalog) : account, orders, addresses, identity, slips, vouchers (masqué si les règles panier sont inactives), wishlist (masqué si le module blockwishlist n'est pas actif), logout.
Variables CSS
Propres au module : --wsab-push-width (largeur du volet), --wsab-float-offset (marge du bouton flottant), --wsab-dir. Variables du thème lues avec valeurs de repli : --color-brand-600, --color-line, --wst-card-shadow…
Formulaire d'administration
getContent() ; soumission submitWsab traitée par Admin\SettingsFormHandler. Champs : mode_desktop, mode_mobile, breakpoint, display, push_side, push_target, floating_side, floating_visibility, floating_offset, enabled[<lien>], labels[<id_lang>][<clé>].
Compatibilité avec le thème Websource
Sur petit écran, l'en-tête du thème masque le conteneur .wsx-hdr__actions (où displayNav2 est rendu) et affiche ses propres icônes .wsx-hicon : le bloc du module, y compris en mode flottant, n'est alors pas visible (constaté à 390 px sur la boutique de test).
Test fourni
php modules/websourceaccountblock/tests/compat_test.php.