Aujourd’hui, je vais vous parler de la nouvelle version de Prestashop.
Avant d’entrer dans le vif du sujet un bref récapitulatif (non exhaustif) de ce qui, à mon sens, n’allait pas dans les versions précédentes de PrestaShop :
- Pas de namespace ce qui, osons le dire, est cruel envers les développeurs ;
- Un système d’override sclérosé ;
- Un système de traduction absurde ;
- Un système de routage obsolète ;
- Une architecture lourde…
Nous pourrions continuer comme ça longtemps mais le fait est que PrestaShop est populaire, surtout en France. En effet, il propose toutes les fonctionnalités nécessaires à la mise en place d’un e-commerce et est relativement facile à prendre en main pour les administrateurs des boutiques en ligne.
Même s’il n’est pas irréprochable sur le plan technique, il répond plus que correctement à sa problématique première : proposer un CMS e-commerce complet et fonctionnel !
Depuis plus d’un an maintenant l’équipe PrestaShop annonce ses travaux sur une nouvelle version majeure de PrestaShop : la 1.7 qui introduit pléthore de remaniements, du moins sur le papier :
- Migration sous Symfony 2.8 ;
- Utilisation de composer ;
- Modernisation de l’architecture ;
- Nouveau système de traduction ;
- Nouvelle page modules et nouvelle façon de développer les modules ;
- Amélioration UX/UI ;
- Nouveau starter thème.
Avec tout ça, on est déjà plus enthousiaste pour travailler avec cette version de PrestaShop qu’avec les précédentes.
Commençons par le détail des évolutions.
Symfony 2
La migration sous Symfony 2 est clairement annoncée par la team PrestaShop comme un moyen de se moderniser et d’attirer une nouvelle catégorie de développeurs dans leur communauté. Cependant on garde les pieds sur terre car la migration vers Symfony concerne pour le moment la page produit et la page module du back-office. C’est une bonne chose car la plupart des développements concernent ces deux axes.
La migration vers Symfony en est à ses prémices mais on applaudit l’effort et on l’encourage ! Elle s’accompagne aussi d’une nouvelle architecture et nous laissera le choix entre deux moteurs de template : Twig et Smarty.
Les thèmes
La team PS à complètement refondu le starter thème et le thème par défaut. Cela annonce clairement une scission entre la version 1.6 et 1.7, scission nécessaire.
Le starter est très propre et permet aux développeurs frontend de créer un thème complet de A à Z.
Le starter thème ne possède pas de style : c’est une volonté de la part de PS qui souhaite laisser aux développeurs une maîtrise totale du thème qu’ils souhaitent développer. Cependant, PS impose d’utiliser Bootstrap 4 comme framework CSS si vous souhaitez commercialiser sur leur store les thèmes que vous aurez développés.
Le thème par défaut a été migré sur Bootstrap 4 et propose une interface moderne et propre. Quelques modifications par ci par là offrent à l’utilisateur des vues beaucoup plus sexy que dans les versions précédentes.
On souligne l’effort d’utiliser des outils modernes comme webpack. Ils ont simplifié et optimisé les ressources en réduisant les JS et CSS files et en les minifiants avant leurs rendus. Nos développeurs frontend seront ravis !
Les modules
Il s’agit ici d’une bonne et d’une mauvaise nouvelle ! Les modules peuvent (et doivent à mon sens) se caler sur Symfony et être écrits de façon moderne (comme des bundles). Malheureusement, PS ne peut pas se permettre de n’offrir aucune rétro compatibilité avec les versions précédentes de son CMS. Je pense donc que de nouveaux modules feront leurs apparitions et utiliseront les namespaces ainsi que les nouveaux outils qu’offre PS comme les widgets. D’autres éditeurs joueront le jeu et feront évoluer leurs modules vers une version plus propres et complètement écrite pour la 1.7, mais beaucoup risquent de se contenter du strict minimum pour que leurs modules soient supportés pour la prochaine version du CMS e-commerce.
Néanmoins la team PS nous donne de nouveaux outils pour développer correctement des modules et nous permet d’utiliser des hooks comme nous le souhaitons grâce à l’interface widget.
Les widgets permettent deux nouvelles fonctionnalités (et pas des moindres) :
- On peut utiliser un module directement depuis un thème… Dans le détail : du moment que le module est installé et que celui-ci implémente la widget interface, vous pouvez appeler une vue à n’importe quel endroit du template de cette manière :
<div class="product-description"> ... </div> <div id="product-social-sharing"> {widget name="socialsharing"} </div>
- On peut également appeler un widget depuis n’importe quel display hook de PS. Par défaut le widget appellera une méthode « default », ce qui signifie que nous pourrons avoir un comportement générique et des comportements particuliers sur chaque display hook.
Les produits
La page produit a été entièrement revue ce qui est appréciable car c’était un sacré bazar sur les versions précédentes. Nous avons donc une page plus ergonomique qui ne met plus 30 secondes à charger. Elle a été complètement remaniée et redéveloppé avec les mêmes composants qu’auparavant.
Plutôt qu’un long discours voici quelques images de présentation :
Les traductions
Je ne vais pas m’attarder sur le système de traduction pour une simple et bonne raison : PS nous a menti ! Leur « nouveau système de traduction » est en fait une reprise de l’existant auquel ils ont greffé une nouvelle interface et quelques fonctionnalités (compatibilité mineur avec Symfony, nouveau standard sur la manière d’écrire les traduction…). L’architecture de traduction contiendra plus de dossiers et moins de fichiers pour ne plus perdre notre temps à taper plusieurs fois la même traduction. En un mot comme en cent : décevant !
Conclusion
Même si je n’ai fait que survoler les modifications dans cet article, PS nous promet un avenir beaucoup plus radieux pour nous développeurs. J’ai volontairement omis les quelques modifications de l’interface comme le menu de gauche qui a été réorganisé et mieux pensé ainsi que les nouveaux utilitaires d’installation du CMS (via page web ou composer).
Si je comprends la motivation de PS de proposer une rétro compatibilité avec ses versions précédentes, je pense qu’il faudra encore beaucoup de travail à la team pour nous proposer un outil de qualité sur lequel travailler. Néanmoins je souligne les efforts qui ont été fait et je les encourage car même si ils étaient nécessaires, il n’était pas évident de les mettre en place.