Nouveau plugin Sylius : Cookie Alert

TL;DR : J'ai profité du temps de confinement pour continuer à monter en compétence sur Sylius. Différents plugins ont été créés pour couvrir des besoins dans une boutique que je gère mensuellement. Le premier à être release est le plus simple : un plugin Cookie Alert.

Sylius est une solution ecommerce basée sur le framework PHP Symfony. Cette solution se veut simple, efficace et n'a pour objectif que de couvrir le besoin de la vente en ligne. Encore jeune, Sylius ne possède pas tout à fait un écosystème de plugin aussi étoffé que ses concurrents (Prestashop/Magento en tête), mais si tout avance comme prévu dans la roadmap, cet écart est destiné à se combler. Chose intéressante, beaucoup d'ecommercants et de sociétés spécialisées sur Magento se tournent vers Sylius.

Étant un habitué de Sylius depuis longtemps, j'ai pu goûter aux joies des migrations à de multiples reprises et ai toujours réagi suivant les besoins et demande des projets. L'un des projets a récemment été mis à jour et ayant un peu de temps, confinement oblige, j'ai pris le parti de pleinement embrasser la version 1.7 et ses modifications.

Nouvelle organisation des entités

Les précédentes versions de Sylius vous invitaient à étendre les entités à la demande vous obligeant à créer des fichiers, de la configuration et au moindre oubli, vous sanctionner avec des erreurs Doctrine.

Sylius 1.7 change un peu les choses, les entités sont déjà étendues et la configuration par défaut est écrite. Ça ne parait rien comme ça, mais coté DX, c'est quand même beaucoup plus simple. Changement adopté.

Semantic UI + Gulp vs Bootstrap + Encore

Pour faire simple, je n'aime vraiment pas Semantic UI et Gulp. Je ne vois pas quoi ajouter. N'étant pas un grand fan de JavaScript et ayant toujours eu mieux à faire que de m'intéresser réellement à tout ça (hormis une vraie tentative avec React), j'ai vraiment regretté le choix de Semantic UI lorsque je souhaitais ajouter des dépendances JavaScript car tout ce que j'avais l'habitude de faire avec Bootstrap était à reprendre.

Sylius 1.7 ouvre officiellement la piste de Bootstrap et Encore. Petit couac sur le theme Bootstrap en version 1.7, il n'est pas encore entièrement compatible (spoil : je me suis mis ce point sur ma todolist). C'est donc avec beaucoup de joie que j'ai greffé Bootstrap, migré tout mon JavaScript sur Encore et... Bonheur.

Themes

Je n'utilisais pas les thèmes, j'ai révisé ma position au passage en créant un thème enfant à celui de bootstrap. Aucun problème particulier, je vous conseille de vous y mettre.

Événements de thèmes

Sylius a revu sa copie à ce niveau en passant de SonataBlock à son propre système de block, quasiment identique, ayant pour but de pouvoir manipuler son interface utilisateur de manière plus simple. J'en ai beaucoup discuté avec la personne en charge de la boutique, on a parlé des avantages et des inconvénients, comparé avec la concurrence (notamment Prestashop) et nous en sommes venu à la conclusion que sur le long terme, il y avait un réel intérêt à se mettre au plus tôt à l'utilisation des événements.

Plugins

Comme beaucoup, j'écris mon code dans src/ et l'organise en conséquence. J'ai décidé de me mettre sérieusement aux plugins car je pense que l’écosystème en a réellement besoin et qu'il y a vraiment des choses à faire, certes plus ou moins intéressantes, mais il y a à faire.

Plusieurs plugins ont donc été créés dont ce premier plugin, très bête, dont nous allons parler.

SyliusCookieAlertPlugin

CookieAlert a pour objectif simple d'afficher un bandeau en bas de page pour informer de l'utilisation de cookies. Ni plus ni moins. Ce plugin utilise une dépendance JavaScript et les événements pour s'ajouter au bon endroit avec un simple template. Et c'est tout (pour le moment).

Il m'a par contre permis de remonter différents points :

  1. La stack de test des plugins est une plaie pour moi qui ai quasiment tout dockerisé sur mon ordinateur. Ce plugin qui modifie uniquement l'UI du front n'est donc pas testé et je ne le considère pas stable le temps de régler ce problème d'une manière ou d'une autre.

  2. Je ne sais pas encore quel serait le meilleur moyen pour prémâcher le travail d'intégration des dépendances JavaScript et si créer deux fichiers SASS/JS, destinés à être consommés par Encore est réellement une bonne idée.

Installation

Rien de très compliqué, il y a aura une PR pour rendre le plugin compatible avec flex dès qu'il sera stable.

composer require black/sylius-cookie-alert-plugin:^1.0.0@dev

<?php

// config/bundles.php

return [
    // ...
    Black\SyliusCookieAlertPlugin\BlackSyliusCookieAlertPlugin::class => ['all' => true],
];
# config/packages/sylius_cookie_alert.yaml
imports:
    - { resource: "@BlackSyliusCookieAlertPlugin/Resources/config/app/config.yml" }
  require('bootstrap-cookie-alert/cookiealert');
@import '~bootstrap-cookie-alert/cookiealert.css';

Rendu final

Le résultat

Sponsoring & contributions

Ce plugin est officiellement sponsorisé par Vanoix qui m'a rémunéré pour la création de ce plugin mais aussi de tous les autres. Nous aurons l'occasion d'en reparler très bientôt.

Vos bonnes idées sont bien entendu les bienvenues. Ce plugin ne parait rien comme ça, mais il reste un indispensable et pourrait servir de base à quelque chose de beaucoup plus conséquent si l'on prend en compte tout ce qu'il y a à faire autour du RGPD.