{"id":552,"date":"2024-03-01T11:00:00","date_gmt":"2024-03-01T10:00:00","guid":{"rendered":"https:\/\/boulyetcailloux.com\/blog\/?p=552"},"modified":"2026-08-08T20:19:55","modified_gmt":"2026-08-08T18:19:55","slug":"approche-architecture-de-prestashop","status":"publish","type":"post","link":"https:\/\/boulyetcailloux.com\/blog\/approche-architecture-de-prestashop\/","title":{"rendered":"Architecture de PrestaShop : ce que la version 1.7 m&rsquo;a appris"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Quand j&rsquo;ai commenc\u00e9 \u00e0 toucher \u00e0 PrestaShop, je ne cherchais pas \u00e0 devenir d\u00e9veloppeuse du c\u0153ur de la solution. Je voulais comprendre assez bien la boutique pour ne pas casser ce qui fonctionnait d\u00e9j\u00e0. Avec le temps, la version 1.7 m&rsquo;a appris une chose simple : PrestaShop n&rsquo;est pas un seul bloc, mais un assemblage de couches qui se r\u00e9pondent.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ce texte garde volontairement son point de d\u00e9part : mon apprentissage autour de PrestaShop 1.7.8.10. Les versions r\u00e9centes, dont PrestaShop 9, ont d&rsquo;autres exigences et d&rsquo;autres \u00e9volutions. Pour installer ou mettre \u00e0 jour aujourd&rsquo;hui, il faut v\u00e9rifier la <a href=\"https:\/\/devdocs.prestashop-project.org\/9\/basics\/installation\/system-requirements\/\" target=\"_blank\" rel=\"noreferrer noopener\">documentation officielle<\/a>, pas recopier une vieille liste de versions.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Le c\u0153ur : PHP, base de donn\u00e9es et logique m\u00e9tier<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">PrestaShop repose sur PHP. C&rsquo;est lui qui ex\u00e9cute une grande partie de la logique : afficher les pages, traiter les commandes, calculer certains \u00e9l\u00e9ments, appeler les modules, r\u00e9cup\u00e9rer les donn\u00e9es. Selon la version de PrestaShop, la version de PHP compatible change. C&rsquo;est une des raisons pour lesquelles une mise \u00e0 jour ne se r\u00e9sume jamais \u00e0 appuyer sur un bouton.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La base de donn\u00e9es stocke les produits, les cat\u00e9gories, les clients, les commandes, les r\u00e9glages et beaucoup d&rsquo;autres informations. Quand on d\u00e9couvre la boutique, on voit d&rsquo;abord le back-office. Mais derri\u00e8re chaque fiche produit ou chaque commande, il y a des tables, des relations, des identifiants et des contraintes. C&rsquo;est utile de le savoir avant de modifier un module ou d&rsquo;importer des donn\u00e9es en masse.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Le th\u00e8me : ce que l&rsquo;on voit, et ce que l&rsquo;on ne voit pas<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Le th\u00e8me porte l&rsquo;apparence de la boutique : pages produit, cat\u00e9gories, panier, tunnel de commande, header, footer, blocs visibles. Dans PrestaShop 1.7, on rencontre des fichiers TPL et le moteur de template Smarty. Les fichiers TPL m\u00e9langent du HTML et des variables qui viennent de PHP. C&rsquo;est pratique, mais il faut rester prudente : une petite modification peut toucher plusieurs pages.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Modifier directement un th\u00e8me install\u00e9 est rarement une bonne id\u00e9e. Le jour d&rsquo;une mise \u00e0 jour, les changements peuvent \u00eatre \u00e9cras\u00e9s ou devenir impossibles \u00e0 suivre. Mieux vaut travailler dans un th\u00e8me enfant ou dans des surcharges identifi\u00e9es, noter ce qui a \u00e9t\u00e9 chang\u00e9, puis vider le cache pour v\u00e9rifier le rendu r\u00e9el.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">CSS, images et cache : les d\u00e9tails qui prennent du temps<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Le CSS donne l&rsquo;apparence finale : tailles, couleurs, espacements, alignements, comportement responsive. C&rsquo;est souvent par l\u00e0 que l&rsquo;on commence, parce que le r\u00e9sultat se voit tout de suite. Mais une boutique a plusieurs contextes : desktop, mobile, page produit, liste, tunnel de commande, emails parfois. Un changement joli \u00e0 un endroit peut cr\u00e9er un probl\u00e8me ailleurs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le cache ajoute une couche de confusion quand on apprend. On modifie un fichier, rien ne bouge, puis tout appara\u00eet d&rsquo;un coup apr\u00e8s vidage du cache ou recompilation des assets. Ce n&rsquo;est pas grave en soi, mais il faut int\u00e9grer ce temps de v\u00e9rification dans la m\u00e9thode.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Les modules : utiles, mais jamais neutres<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Les modules ajoutent des fonctions : paiement, livraison, blog, filtres, s\u00e9curit\u00e9, marketing, export, affichage. Ils rendent beaucoup de choses possibles sans tout coder soi-m\u00eame. Mais chaque module ajoute aussi du code, des r\u00e9glages, parfois des tables, parfois des hooks dans le th\u00e8me. Plus on en installe, plus il faut surveiller les compatibilit\u00e9s.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Avec le recul, je pr\u00e9f\u00e8re ajouter un module seulement quand le besoin est clair. Avant, je pouvais tester par curiosit\u00e9. Maintenant, je me demande plut\u00f4t : est-ce que cette fonction sert vraiment la boutique ? Est-ce qu&rsquo;elle sera maintenue ? Est-ce qu&rsquo;elle ralentit quelque chose ? Est-ce qu&rsquo;elle complique une future mise \u00e0 jour ?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ce que cette version m&rsquo;a surtout appris<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">PrestaShop 1.7.8.10 m&rsquo;a appris \u00e0 avancer par petites \u00e9tapes. Faire une sauvegarde avant une modification. Tester hors production quand c&rsquo;est possible. Lire le fichier que je touche au lieu de chercher une r\u00e9ponse toute faite. Garder une trace des changements. Et accepter qu&rsquo;une boutique en ligne demande autant de m\u00e9thode que de go\u00fbt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ce n&rsquo;est pas un article pour dire qu&rsquo;une ancienne version suffit encore aujourd&rsquo;hui. C&rsquo;est plut\u00f4t une archive de progression : comprendre les couches de la boutique, les respecter, puis d\u00e9cider plus calmement quoi modifier et quand passer \u00e0 une version plus r\u00e9cente.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cet article garde une trace de mon apprentissage sur PrestaShop 1.7 : PHP, base de donn\u00e9es, th\u00e8me, fichiers TPL, Smarty et modules.<\/p>\n","protected":false},"author":1,"featured_media":557,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[13],"pbblogapps_content_type":[237],"class_list":["post-552","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-la-boutique-en-ligne","tag-site"],"_links":{"self":[{"href":"https:\/\/boulyetcailloux.com\/blog\/wp-json\/wp\/v2\/posts\/552","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/boulyetcailloux.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/boulyetcailloux.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/boulyetcailloux.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/boulyetcailloux.com\/blog\/wp-json\/wp\/v2\/comments?post=552"}],"version-history":[{"count":9,"href":"https:\/\/boulyetcailloux.com\/blog\/wp-json\/wp\/v2\/posts\/552\/revisions"}],"predecessor-version":[{"id":760,"href":"https:\/\/boulyetcailloux.com\/blog\/wp-json\/wp\/v2\/posts\/552\/revisions\/760"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/boulyetcailloux.com\/blog\/wp-json\/wp\/v2\/media\/557"}],"wp:attachment":[{"href":"https:\/\/boulyetcailloux.com\/blog\/wp-json\/wp\/v2\/media?parent=552"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/boulyetcailloux.com\/blog\/wp-json\/wp\/v2\/categories?post=552"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/boulyetcailloux.com\/blog\/wp-json\/wp\/v2\/tags?post=552"},{"taxonomy":"pbblogapps_content_type","embeddable":true,"href":"https:\/\/boulyetcailloux.com\/blog\/wp-json\/wp\/v2\/pbblogapps_content_type?post=552"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}