Vue d'ensemble
- Module
websourceslider, espace de nomsWebsource\Slider\(PSR-4 danssrc/), implémenteWidgetInterface. Contrôleur d'administrationAdminWebsourceSlider(Apparence > Slider) ;getContent()y redirige. Image\ImageUploader,ImageVariants,UploadGuard;Render\PictureBuilder,StyleBuilder,SliderCache;Repository\SliderRepository;Settings\Placements;Import\ImageSliderImporter;Builder\SliderBlock.
Hooks
| Hook | Rôle |
|---|---|
displayHome, displayNavFullWidth, displayWrapperTop, displayWrapperBottom, displayFooterBefore, displayFooter | Rendu des sliders actifs placés à cet endroit, pour la page courante. Un hook libre (emplacement avancé) est greffé à l'enregistrement. |
actionFrontControllerSetMedia | Feuille de style et script du slider, seulement si un slider s'affiche. |
actionWebsourceBuilderRegisterBlocks | Bloc « Slider » pour Websource Builder (type websource_slider). |
actionObjectShopAddAfter, actionShopDataDuplication, actionObjectShopDeleteAfter | Multiboutique : hooks, copie et nettoyage par boutique. |
actionWebsourceThemeExport, actionWebsourceThemeImport | Participation au paquet de thème. |
Emplacements (Settings\Placements)
| Position | Hook | Pages |
|---|---|---|
home | displayHome | accueil |
under_header | displayNavFullWidth | au choix |
page_top | displayWrapperTop | au choix |
page_bottom | displayWrapperBottom | au choix |
before_footer | displayFooterBefore | au choix |
footer | displayFooter | au choix |
custom | hook libre | au choix |
Pages : all, home, category, product, brand, cms, search, login, account, cart, checkout, contact, notfound. 8 emplacements au plus par slider.
Widget et PHP
{widget name='websourceslider' slider='demo-a-accueil'}
{widget name='websourceslider' slider=3}
slider = identifiant texte (colonne identifier) ou numéro. Sans slider, le widget rend les sliders placés sur le hook d'appel. getWidgetVariables() renvoie un tableau vide.
echo WebsourceSlider::renderSliderById(3);
Gabarit views/templates/hook/slider.tpl, surchargeable dans themes/<thème>/modules/websourceslider/views/templates/hook/slider.tpl.
Balisage et CSS
Racine constatée : <section class="wss wss--slide wss--box wss--ratio wss--theme"> ; éléments .wss__frame, .wss__viewport, .wss__track, .wss__slide, .wss__overlay, .wss__content, .wss__title, .wss__subtitle.
Variables CSS : --wss-accent, --wss-accent-c, --wss-text, --wss-ov (voile), --wss-btn-bg, --wss-btn-text, --wss-btn-radius, --wss-radius, --wss-r, --wss-shadow, --wss-ratio, --wss-ratio-m (formats ordinateur et téléphone), --wss-h, --wss-hm (hauteurs fixes). Par défaut elles reprennent le thème (--color-brand-600, --radius-2xl, --wst-card-shadow). Arrondis prédéfinis : none 0, small .5rem, medium 1rem, large 1.75rem.
Images
- Envoi : JPG, JPEG, PNG, WebP, AVIF ; 5 242 880 octets et 6000 px au plus (
ImageUploader). - Variantes pour
srcset: 480, 768, 1200, 1600, 1920 px, jusqu'à 2560 px, en AVIF / WebP si GD sait les écrire (ImageVariants). <picture>avec source téléphone sous(max-width: 767.98px)(PictureBuilder::MOBILE_MEDIA).- Stockage sous des noms aléatoires dans
uploads/, protégé par un.htaccessqui interdit l'exécution de code (UploadGuard).
Liens
Lien de diapositive ou de bouton : adresse, ou raccourci cms:<id>, page:<clé> résolu par Link dans la langue du visiteur.
Tables
{prefix}websourceslider_slider:id_slider,id_shop,identifier,name,active,slides_count,placements(JSON),content(version en ligne, JSON),draft(brouillon, JSON),date_add,date_upd.{prefix}websourceslider_image:id_image,id_shop,filename,original_name,mime,width,height,size,variants(JSON),date_add.
Configuration et cache
WEBSOURCESLIDER_KEEP_DATA(globale) : 1 = conserver sliders et images à la désinstallation.- Cache de rendu :
Render\SliderCache, durée 3 600 secondes, vidé à l'enregistrement.
Actions AJAX du contrôleur
create, draft (sauvegarde automatique), save (mise en ligne), toggle, duplicate, delete, upload, deleteImage, import (reprise de ps_imageslider : tables homeslider, homeslider_slides, homeslider_slides_lang), keepData. Appel ajax=1&action=<nom> avec le jeton du back-office ; réponses JSON.
Test fourni
php modules/websourceslider/tests/run.php.