Version allégée du module PrestaShop Ever Block (Team Ever, v9.0.6, licence AFL 3.0) : on conserve le socle — blocs HTML sur les hooks, shortcodes — et on retire tout le surplus (FAQ, pages, contenus produit, page builders, outils d'administration).
- Nom technique :
everblocklight - Compatibilité déclarée : PrestaShop 8.0+ (
ps_versions_compliancy), PHP 8.1+ (composer.json) - Auteur : Griiv
- Licence : AFL 3.0 (voir
LICENSE.md) - Œuvre dérivée d'Ever Block 9.0.6 (© 2019-2025 Team Ever), modifiée par Griiv en 2026. Les mentions de copyright et de licence d'origine sont conservées dans chaque fichier, conformément à l'article 6 de l'AFL 3.0.
- Création illimitée de blocs HTML multilingues, positionnés sur n'importe quel hook
display*. - Ciblage : page d'accueil uniquement, catégories, produits d'une catégorie, marques, fournisseurs, catégories CMS, groupes clients, appareil (mobile / tablette / desktop), dates de début et de fin.
- Mise en forme : conteneur, classes CSS / Bootstrap, attributs
data-*, couleur de fond, code personnalisé. - Affichage en modale (délai d'apparition, fréquence d'affichage via cookie).
- SEO / performance : obfuscation des liens, lazyload des images, cache de rendu par bloc.
- Actions en masse (activer, désactiver, dupliquer, supprimer) et aperçu front du bloc depuis l'admin.
- Liste et gestion des hooks display depuis l'admin (création de hooks personnalisés).
- Shortcodes personnalisés (onglet « Shortcodes ») + documentation intégrée dans l'admin.
- Shortcodes intégrés :
- Contenu :
[alert],[video],[everblocklight id](inclusion d’un autre bloc),[cms],[evercms],[widget],{hook h='...'},[shop_logo],[llorem],[everimg] - Produits :
[product],[product_image],[category],[manufacturer],[brands],[subcategories],[productfeature],[productfeaturevalue],[last-products],[recently_viewed],[promo-products],[best-sales],[categorybestsales],[brandbestsales],[featurebestsales],[featurevaluebestsales],[products_by_tag],[low_stock],[random_product],[linkedproducts],[accessories],[crosselling] - Panier / client :
[evercart],[cart_total],[cart_quantity],[everaddtocart],[newsletter_form],[entity_firstname],[entity_lastname],[entity_gender]… - Formulaires : formulaire de contact (
[evercontactform_open]…[evercontact type="…"]…[evercontactform_close]),[nativecontact] - Intégrations externes :
[googlereviews],[storelocator],[evermap],[everstore],[qcdacf],[displayQcdSvg]
- Contenu :
- Les shortcodes sont rendus dans toute la page front (
actionOutputHTMLBefore) et dans les e-mails (actionEmailAddAfterContent).
La liste détaillée des paramètres est disponible dans l'admin : Ever Block Light > Shortcode documentation.
Dans le contenu d'un bloc : <a href="#" data-everclickmodal="ID_DU_BLOC">…</a> ou <a href="#" data-evercms="ID_CMS">…</a>.
- Réglages : chargement du CSS front, script d'obfuscation, TinyMCE, nombre de paragraphes/phrases pour
[llorem]. - Google (Places / avis, Maps / store locator, icône de marqueur), horaires exceptionnels par magasin.
- Outils : CSS / JS personnalisés, liens CSS / JS externes, scripts d'en-tête, vidage du cache du module.
php bin/console everblocklight:tools:execute --listActions : checkdatabase, clearcache.
- FAQ (admin, pages front, liaison produits, shortcodes
[everfaq]/[everfaq_product]) - Pages / guides (admin, contrôleurs front, routes)
- Contenus produit : onglets, flags (dont « épuisé » et caractéristiques), modales fichiers produit, onglet global, import xlsx
- Intégrations Pretty Blocks et QCD Page Builder, jeux (roue de la fortune, etc.)
- Meta Tools (Instagram :
[everinstagram], jeton, cache des médias) et WordPress Tools ([wordpress-posts], API REST, image de fond), ainsi que le contrôleur cron qui ne servait qu'à ces deux intégrations - Outils d'administration : mise à jour automatique depuis GitHub, traduction Google, sauvegarde / restauration, génération de produits factices, purge des logs, suppression des langues, migration d'URL, recherche / remplacement en base, import / export xlsx
- Étape supplémentaire du tunnel de commande (formulaire
[everorderform], affichage sur confirmation de commande, factures, bons de livraison et admin commande) - Mot de passe de maintenance, connexion en tant que client, « hack » Google Shopping
- Nettoyage automatique des fichiers PHP hors liste blanche (
allowed_files.php)
| Élément | Valeur |
|---|---|
| Dossier / classe principale | everblocklight / Everblocklight |
| Namespace PHP | Everblocklight\Tools\ (PSR-4 → src/) |
| Tables | PREFIX_everblocklight, PREFIX_everblocklight_lang, PREFIX_everblocklight_shortcode, PREFIX_everblocklight_shortcode_lang (utf8mb4) |
| Clés de configuration | préfixe EVERBLOCKLIGHT_ (toutes supprimées à la désinstallation) |
| Onglets admin | AdminEverBlockLight* |
| Routes admin | admin_everblocklight_* |
| Domaine de traduction | Modules.Everblocklight.* |
- Pas de reprise des données d'Ever Block : les blocs et shortcodes existants de l'original ne sont pas migrés automatiquement.
- Coexistence avec Ever Block : les deux modules peuvent être installés en même temps (tables, configuration, namespace et routes distincts). En front, certains attributs génériques (
data-everclickmodal,data-evercms, obfuscationdata-ob) sont écoutés par les deux scripts : éviter d'activer les deux modules sur la même boutique en production. - Le fichier
views/js/everblock-loader.jsréférencé par Ever Block 9.0.6 était absent de la source fournie ; Ever Block Light charge directementviews/js/everblocklight.js.
L'outillage de test est isolé dans tests/ (son propre composer.json, tests/vendor/ ignoré par git) : le vendor/ du module livré en production ne contient jamais PHPUnit ni PHPStan.
cd tests
composer install
vendor/bin/phpunit # tests unitaires + tests d'intégrité
_PS_ROOT_DIR_=/chemin/vers/prestashop vendor/bin/phpstan analyse -c phpstan.neontests/Unit: moteur de shortcodes, outils SEO (obfuscation, lazyload), horaires / jours fériés, entités, cache (les classes du cœur PrestaShop sont remplacées par des stubs,tests/stubs).tests/Integrity: cohérence du module (templates référencés présents, routes ↔ actions, préfixeEVERBLOCKLIGHT_des clés de configuration, tables install/uninstall, absence d'identifiants Ever Block ou de fonctionnalités retirées).- PHPStan (niveau 3) s'exécute contre les sources réelles de PrestaShop (
_PS_ROOT_DIR_: clone du dépôt officiel +composer install --no-dev).
La CI GitHub Actions (.github/workflows/ci.yml) joue à chaque push / pull request et chaque lundi :
lint PHP 8.1 → 8.4, syntaxe JS, PHPUnit PHP 8.1 → 8.4, PHPStan contre PrestaShop 8.2.8 et 9.1.5 (+ branche 9.2.x en informatif), test d'installation réel, puis produit l'archive everblocklight.zip sans l'outillage de développement.
Le test d'installation (tests/install/run.sh <tag image>, job install) démarre les images Docker officielles prestashop/prestashop (8.2 / PHP 8.1 et 9.1 / PHP 8.4) avec MySQL 8.0, installe le module en ligne de commande, vérifie tables / hooks / onglets / routes / conteneur Symfony, enregistre un bloc et un shortcode via les repositories du module, contrôle leur rendu sur la page d'accueil (sans erreur PHP), puis désinstalle et vérifie le nettoyage. Il se lance aussi en local : tests/install/run.sh 9.1-8.4.