[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"theme-db":3,"$fpui6gpn1jQrHzBMmAHbcHcUullvlte2BoR84CZROp80":22,"$fKnz2vuX4bZz1LbUTiuFsvSZ3e07l5_5fqNYp4Tzdhi8":60,"footer-db":141,"megamenu":160,"header-db":215,"$fmPC-PJxN8fe2Il9M6851FwWmcD2khT_hzjKhRpAewuI":226},{"theme":4},{"colors":5,"typography":13,"ui":17,"defaultColorMode":21},{"primary":6,"secondary":7,"background":8,"foreground":9,"muted":10,"headerBg":11,"footerBg":12,"topBarBg":9,"topBarText":11},"#4F46E5","#0D9488","#F9FAFB","#111827","#6B7280","#ffffff","#020617",{"fontFamily":14,"fontUrl":15,"baseFontSize":16},"Inter, system-ui, sans-serif","https:\u002F\u002Ffonts.googleapis.com\u002Fcss2?family=Inter:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,400;0,700;0,800;0,900;1,400;1,700&display=swap","16px",{"borderRadius":18,"contentWidth":19,"shadow":20},"lg","7xl",true,"light",{"title":23,"slug":24,"metaDescription":25,"category":26,"tags":27,"difficulty":33,"psVersions":34,"content":38,"faq":39,"tldr":55,"readingTime":56,"generatedAt":57,"publishDate":57,"relatedArticles":58,"sourceCategory":59},"Dupliquer un thème PrestaShop pour protéger ses modifications des mises à jour","dupliquer-theme-prestashop-proteger-modifications-mises-a-jour","Apprenez à dupliquer votre thème PrestaShop pour préserver vos personnalisations lors des mises à jour. Méthode complète pour PS 1.6, 1.7 et 8.x.","design",[28,29,30,31,32],"thème PrestaShop","mise à jour PrestaShop","duplication thème","child theme","personnalisation thème","debutant",[35,36,37],"1.6","1.7","8.x","\u003Ch2>Introduction\u003C\u002Fh2>\n\u003Cp>L'une des erreurs les plus fréquentes chez les marchands PrestaShop consiste à modifier directement le thème par défaut de la boutique. Le jour où une mise à jour du CMS ou du thème est appliquée, toutes les personnalisations sont écrasées sans possibilité de retour en arrière. C'est un scénario que je rencontre régulièrement en intervention technique depuis 2014.\u003C\u002Fp>\n\u003Cp>La solution est simple et éprouvée : \u003Cstrong>dupliquer le thème avant d'y apporter la moindre modification\u003C\u002Fstrong>. Cette approche garantit que vos personnalisations survivent à toutes les mises à jour futures.\u003C\u002Fp>\n\u003Ch2>Pourquoi les mises à jour écrasent vos modifications\u003C\u002Fh2>\n\u003Cp>Lorsque PrestaShop applique une mise à jour, le processus remplace les fichiers du thème par défaut (\u003Ccode>default-bootstrap\u003C\u002Fcode> sur 1.6, \u003Ccode>classic\u003C\u002Fcode> sur 1.7\u002F8.x) par leurs nouvelles versions. Si vous avez modifié ces fichiers directement, vos changements sont purement et simplement supprimés.\u003C\u002Fp>\n\u003Cp>Le mécanisme de chargement des templates de PrestaShop fonctionne ainsi :\u003C\u002Fp>\n\u003Col>\n\u003Cli>PrestaShop cherche d'abord les fichiers dans le dossier du **thème actif** sélectionné dans le back-office\u003C\u002Fli>\n\u003Cli>Si un fichier n'est pas trouvé dans le thème actif, il remonte au thème parent (sur 1.7\u002F8.x)\u003C\u002Fli>\n\u003Cli>Les modules suivent la même logique : PrestaShop lit **en priorité** les dossiers `modules\u002F` situés à l'intérieur du thème sélectionné\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Cette hiérarchie de chargement est précisément ce qui rend la duplication de thème si efficace.\u003C\u002Fp>\n\u003Ch2>Méthode de duplication sur PrestaShop 1.6\u003C\u002Fh2>\n\u003Cp>Sur PrestaShop 1.6, la duplication se fait directement depuis le back-office :\u003C\u002Fp>\n\u003Col>\n\u003Cli>Accédez à **Préférences → Thèmes**\u003C\u002Fli>\n\u003Cli>Cliquez sur **Exporter le thème** (bouton en haut à droite)\u003C\u002Fli>\n\u003Cli>PrestaShop génère une archive `.zip` du thème actif\u003C\u002Fli>\n\u003Cli>Renommez cette archive avec le nom de votre thème personnalisé (par exemple `montheme.zip`)\u003C\u002Fli>\n\u003Cli>Retournez dans **Préférences → Thèmes** et importez le fichier `.zip` renommé\u003C\u002Fli>\n\u003Cli>Activez votre nouveau thème\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Vous disposez désormais d'une copie indépendante du thème d'origine sur laquelle vous pouvez travailler librement.\u003C\u002Fp>\n\u003Ch2>Méthode recommandée sur PrestaShop 1.7 et 8.x : le thème enfant\u003C\u002Fh2>\n\u003Cp>À partir de PrestaShop 1.7, la notion de \u003Cstrong>thème enfant\u003C\u002Fstrong> (child theme) a été introduite. C'est la méthode recommandée car elle offre plusieurs avantages par rapport à la simple copie intégrale :\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Seuls les fichiers modifiés sont présents dans le thème enfant\u003C\u002Fli>\n\u003Cli>Le thème parent peut être mis à jour indépendamment\u003C\u002Fli>\n\u003Cli>La maintenance est considérablement simplifiée\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Créer un thème enfant manuellement\u003C\u002Fh3>\n\u003Cp>Créez la structure suivante dans \u003Ccode>\u002Fthemes\u002F\u003C\u002Fcode> :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-\">\nthemes\u002F\n└── mon-theme\u002F\n    ├── config\u002F\n    │   └── theme.yml\n    ├── assets\u002F\n    │   └── css\u002F\n    │       └── custom.css\n    └── templates\u002F\n        └── (vos surcharges ici)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Le fichier \u003Ccode>theme.yml\u003C\u002Fcode> doit déclarer le thème parent :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-yaml\">\nparent: classic\nname: mon-theme\ndisplay_name: Mon Thème Personnalisé\nversion: 1.0.0\nauthor:\n  name: \"Mon Entreprise\"\n  email: \"contact@monentreprise.fr\"\n\nmeta:\n  compatibility:\n    from: 8.0.0\n    to: ~\n\nassets:\n  use_parent_assets: true\n  css:\n    custom:\n      path: assets\u002Fcss\u002Fcustom.css\n      media: all\n      priority: 200\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Avec cette configuration, PrestaShop charge d'abord les assets du thème parent \u003Ccode>classic\u003C\u002Fcode>, puis applique vos surcharges par-dessus.\u003C\u002Fp>\n\u003Ch3>Surcharger un template spécifique\u003C\u002Fh3>\n\u003Cp>Pour modifier un template, copiez uniquement le fichier concerné en conservant la même arborescence :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\">\n# Exemple : surcharger la page produit\nmkdir -p themes\u002Fmon-theme\u002Ftemplates\u002Fcatalog\u002F\ncp themes\u002Fclassic\u002Ftemplates\u002Fcatalog\u002Fproduct.tpl themes\u002Fmon-theme\u002Ftemplates\u002Fcatalog\u002Fproduct.tpl\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>PrestaShop utilisera automatiquement votre version du fichier.\u003C\u002Fp>\n\u003Ch2>La surcharge des modules via le thème\u003C\u002Fh2>\n\u003Cp>Un aspect souvent méconnu : le dossier \u003Ccode>modules\u002F\u003C\u002Fcode> à l'intérieur de votre thème permet de surcharger les templates et assets des modules sans toucher aux fichiers d'origine.\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-\">\nthemes\u002Fmon-theme\u002F\n└── modules\u002F\n    └── ps_featuredproducts\u002F\n        └── views\u002F\n            └── templates\u002F\n                └── hook\u002F\n                    └── ps_featuredproducts.tpl\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>PrestaShop lit \u003Cstrong>en priorité\u003C\u002Fstrong> les fichiers situés dans le dossier \u003Ccode>modules\u002F\u003C\u002Fcode> du thème actif. Cela signifie que vous pouvez personnaliser l'affichage de n'importe quel module tout en conservant la possibilité de le mettre à jour via le back-office.\u003C\u002Fp>\n\u003Ch3>Surcharger les assets CSS\u002FJS d'un module\u003C\u002Fh3>\n\u003Cp>Même logique pour les fichiers CSS et JavaScript :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-\">\nthemes\u002Fmon-theme\u002F\n└── modules\u002F\n    └── ps_searchbar\u002F\n        └── views\u002F\n            └── css\u002F\n                └── ps_searchbar.css\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>Bonnes pratiques pour la gestion des mises à jour\u003C\u002Fh2>\n\u003Ch3>Avant chaque mise à jour\u003C\u002Fh3>\n\u003Col>\n\u003Cli>**Sauvegardez** votre base de données et vos fichiers (`\u002Fthemes\u002F`, `\u002Fmodules\u002F`, `\u002Foverride\u002F`)\u003C\u002Fli>\n\u003Cli>**Testez** la mise à jour sur un environnement de pré-production\u003C\u002Fli>\n\u003Cli>**Vérifiez** la compatibilité de vos modules avec la nouvelle version\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Après la mise à jour\u003C\u002Fh3>\n\u003Col>\n\u003Cli>Videz le cache PrestaShop (**Paramètres avancés → Performances**)\u003C\u002Fli>\n\u003Cli>Vérifiez visuellement le front-office\u003C\u002Fli>\n\u003Cli>Testez le tunnel de commande complet\u003C\u002Fli>\n\u003Cli>Contrôlez les logs d'erreurs PHP\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Utiliser Git pour versionner le thème\u003C\u002Fh3>\n\u003Cp>La meilleure assurance contre les pertes de modifications reste le versionnement :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\">\ncd themes\u002Fmon-theme\u002F\ngit init\ngit add .\ngit commit -m \"Initial : duplication du thème classic\"\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>À chaque modification, un commit permet de tracer précisément les changements et de revenir en arrière si nécessaire.\u003C\u002Fp>\n\u003Ch2>Résumé de la stratégie par version\u003C\u002Fh2>\n\u003Ctr>\u003Cth>Version\u003C\u002Fth>\u003Cth>Méthode recommandée\u003C\u002Fth>\u003Cth>Emplacement\u003C\u002Fth>\u003C\u002Ftr>\n\u003Ctr>\u003Cth>PrestaShop 1.6\u003C\u002Fth>\u003Cth>Export\u002FImport via le back-office\u003C\u002Fth>\u003Cth>Préférences → Thèmes\u003C\u002Fth>\u003C\u002Ftr>\n\u003Ctr>\u003Cth>PrestaShop 1.7\u003C\u002Fth>\u003Cth>Thème enfant avec `theme.yml`\u003C\u002Fth>\u003Cth>`\u002Fthemes\u002Fmon-theme\u002F`\u003C\u002Fth>\u003C\u002Ftr>\n\u003Ctr>\u003Cth>PrestaShop 8.x\u003C\u002Fth>\u003Cth>Thème enfant avec `theme.yml`\u003C\u002Fth>\u003Cth>`\u002Fthemes\u002Fmon-theme\u002F`\u003C\u002Fth>\u003C\u002Ftr>\n\u003Cp>Quelle que soit la version, le principe fondamental reste le même : \u003Cstrong>ne jamais modifier le thème par défaut\u003C\u002Fstrong>. Dupliquez, personnalisez, et vos modifications traverseront sereinement toutes les mises à jour.\u003C\u002Fp>",[40,43,46,49,52],{"q":41,"a":42},"Est-ce que dupliquer un thème PrestaShop ralentit la boutique ?","Non, la duplication d'un thème n'a aucun impact sur les performances. PrestaShop charge uniquement le thème actif sélectionné dans le back-office. Le thème d'origine reste présent sur le serveur mais n'est ni lu ni interprété. Avec un thème enfant sur 1.7\u002F8.x, les performances sont même optimisées puisque seuls les fichiers surchargés sont chargés en complément du parent.",{"q":44,"a":45},"Que se passe-t-il si je mets à jour PrestaShop sans avoir dupliqué mon thème ?","Les fichiers du thème par défaut (default-bootstrap sur 1.6, classic sur 1.7\u002F8.x) seront écrasés par la mise à jour. Toutes vos personnalisations CSS, templates et JavaScript seront perdues. Si vous êtes dans cette situation, vérifiez si une sauvegarde récente existe. À défaut, il faudra recréer les modifications manuellement. C'est pourquoi la duplication doit être le tout premier réflexe avant toute personnalisation.",{"q":47,"a":48},"Quelle est la différence entre un thème dupliqué et un thème enfant PrestaShop ?","Un thème dupliqué est une copie intégrale de tous les fichiers du thème parent. Un thème enfant ne contient que les fichiers modifiés et hérite automatiquement du reste via la directive 'parent' dans theme.yml. Le thème enfant est préférable car il est plus léger, plus facile à maintenir, et permet de bénéficier des corrections du thème parent sans conflit. Cette fonctionnalité est disponible à partir de PrestaShop 1.7.",{"q":50,"a":51},"Les modules personnalisés dans le thème sont-ils aussi protégés des mises à jour ?","Oui. Lorsque vous placez les surcharges de templates ou d'assets de modules dans le dossier modules\u002F de votre thème personnalisé, ces fichiers sont prioritaires sur ceux du module d'origine. Mettre à jour un module via le back-office ne touche que les fichiers dans le répertoire \u002Fmodules\u002F à la racine, pas ceux de votre thème. Vos personnalisations visuelles sont donc préservées.",{"q":53,"a":54},"Comment dupliquer un thème acheté sur la marketplace Addons PrestaShop ?","La méthode est identique : créez un thème enfant qui déclare le thème acheté comme parent dans theme.yml. Placez uniquement vos modifications dans le thème enfant. Ainsi, lorsque l'éditeur publie une mise à jour du thème, vous pouvez l'appliquer sans perdre vos personnalisations. Attention toutefois à vérifier après chaque mise à jour que vos surcharges restent compatibles avec les éventuels changements de structure HTML.","Ne modifiez jamais le thème par défaut de PrestaShop : dupliquez-le (1.6) ou créez un thème enfant (1.7\u002F8.x) pour que vos personnalisations survivent à toutes les mises à jour du CMS et des modules.",5,"2026-03-21T14:57:24.000Z",[],"PrestaShop pour les développeurs",{"columns":61},[62,78,108,129],{"title":63,"links":64},"Plateforme",[65,69,72,75],{"label":66,"href":67,"external":68},"Offre Starter (2 500 €)","\u002Foffre-starter",false,{"label":70,"href":71,"external":68},"Devenir Ambassadeur","\u002Fambassadeur",{"label":73,"href":74,"external":68},"Modules PrestaShop","\u002Fmodules",{"label":76,"href":77,"external":20},"CodeMyShop.com","https:\u002F\u002Fcodemyshop.com",{"title":79,"links":80},"Le Synedre",[81,84,87,90,93,96,99,102,105],{"label":82,"href":83,"external":68},"L'histoire","\u002Fsynedre",{"label":85,"href":86,"external":68},"Constitution","\u002Fsynedre\u002Fconstitution",{"label":88,"href":89,"external":68},"L'équipe","\u002Fequipe",{"label":91,"href":92,"external":68},"Le réacteur en direct","\u002Freacteur",{"label":94,"href":95,"external":68},"Le Drill (entraînement)","\u002Fdrill",{"label":97,"href":98,"external":68},"Protocole de réunion","\u002Fsynedre\u002Freunion",{"label":100,"href":101,"external":68},"Les agents IA","\u002Fagents-ia",{"label":103,"href":104,"external":68},"La Conduite","\u002Fsynedre\u002Fconduite",{"label":106,"href":107,"external":68},"Charte plateforme","\u002Fsynedre\u002Fcharte",{"title":109,"links":110},"Ressources",[111,114,117,120,123,126],{"label":112,"href":113,"external":68},"Blog","\u002Fblog",{"label":115,"href":116,"external":68},"Academy","\u002Facademy",{"label":118,"href":119,"external":68},"Dictionnaire","\u002Fdictionnaire",{"label":121,"href":122,"external":68},"Expertise PrestaShop","\u002Fexpertise",{"label":124,"href":125,"external":68},"Flywheel","\u002Fflywheel",{"label":127,"href":128,"external":68},"Manifeste","\u002Fmanifeste",{"title":130,"links":131},"À propos",[132,135,138],{"label":133,"href":134,"external":68},"Alexandre Carette","\u002Fa-propos",{"label":136,"href":137,"external":68},"Dossier de presse","\u002Fpresse",{"label":139,"href":140,"external":68},"Contact","\u002Fcontact",{"footer":142},{"theme":143,"description":144,"hours":144,"logo":145,"contact":148,"social":149,"bottomBar":159},"dark",null,{"src":146,"href":147,"alt":133},"\u002Flogo-ac.svg","\u002F",{"email":144,"phone":144,"address":144,"cta":144},[150,153,156],{"platform":151,"href":152,"label":151},"linkedin","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Falexandre-carette\u002F",{"platform":154,"href":155,"label":154},"malt","https:\u002F\u002Fwww.malt.fr\u002Fprofile\u002Falexandrecarette",{"platform":157,"href":158,"label":157},"github","https:\u002F\u002Fgithub.com\u002Fprest4cafe",{"copyright":144},{"items":161},[162,170,176,182,190,198,203,209],{"id":163,"type":164,"label":165,"href":122,"icon":144,"description":144,"badge":144,"groupTitle":144,"style":144,"gridColumns":144,"cssClass":144,"psCategoryId":144,"showPsChildren":68,"position":167,"children":168,"psChildren":169},41,"link",{"fr":166},"Expertise",0,[],[],{"id":171,"type":164,"label":172,"href":113,"icon":144,"description":144,"badge":144,"groupTitle":144,"style":144,"gridColumns":144,"cssClass":144,"psCategoryId":144,"showPsChildren":68,"position":173,"children":174,"psChildren":175},42,{"fr":112},1,[],[],{"id":177,"type":164,"label":178,"href":74,"icon":144,"description":144,"badge":144,"groupTitle":144,"style":144,"gridColumns":144,"cssClass":144,"psCategoryId":144,"showPsChildren":68,"position":179,"children":180,"psChildren":181},43,{"fr":73},2,[],[],{"id":183,"type":164,"label":184,"href":186,"icon":144,"description":144,"badge":144,"groupTitle":144,"style":144,"gridColumns":144,"cssClass":144,"psCategoryId":144,"showPsChildren":68,"position":187,"children":188,"psChildren":189},44,{"fr":185},"Outils IA","\u002Foutils-ia",3,[],[],{"id":191,"type":164,"label":192,"href":67,"icon":144,"description":144,"badge":144,"groupTitle":144,"style":194,"gridColumns":144,"cssClass":144,"psCategoryId":144,"showPsChildren":68,"position":195,"children":196,"psChildren":197},45,{"fr":193},"Offre Starter ✨",{"highlight":20},4,[],[],{"id":199,"type":164,"label":200,"href":116,"icon":144,"description":144,"badge":144,"groupTitle":144,"style":144,"gridColumns":144,"cssClass":144,"psCategoryId":144,"showPsChildren":68,"position":56,"children":201,"psChildren":202},46,{"fr":115},[],[],{"id":204,"type":164,"label":205,"href":134,"icon":144,"description":144,"badge":144,"groupTitle":144,"style":144,"gridColumns":144,"cssClass":144,"psCategoryId":144,"showPsChildren":68,"position":206,"children":207,"psChildren":208},47,{"fr":130},6,[],[],{"id":210,"type":164,"label":211,"href":140,"icon":144,"description":144,"badge":144,"groupTitle":144,"style":144,"gridColumns":144,"cssClass":144,"psCategoryId":144,"showPsChildren":68,"position":212,"children":213,"psChildren":214},48,{"fr":139},7,[],[],{"header":216},{"logo":217,"topBar":220,"contactEmail":223,"features":224,"navBar":144},{"src":146,"alt":218,"text":133,"href":147,"class":219},"Alexandre Carette — Architecte E-commerce Souverain","h-10 w-10",{"message":144,"showLanguages":68,"align":221,"languages":222},"left",[],"contact@alexandrecarette.fr",{"showSearch":68,"showWishlist":68,"showLogin":20,"showContact":68,"showCart":68,"stickyHeader":20,"headerLayout":225},"inline",{"academy":227,"blog":228,"expertise":239},[],[229,233,236],{"title":230,"url":231,"score":173,"type":232},"PrestaShop headless avec Nuxt 3 : pourquoi séparer back et front","\u002Fblog\u002Fprestashop\u002Farchitecture\u002Fprestashop-headless-nuxt-separation-front-back","blog",{"title":234,"url":235,"score":173,"type":232},"PrestaShop headless : Nuxt 3, pas Next.js — le choix souverain","\u002Fblog\u002Fprestashop\u002Farchitecture\u002Fprestashop-headless-nuxt-nextjs-souverainete",{"title":237,"url":238,"score":173,"type":232},"Sylius rachète PrestaShop : ce que ça change pour vous","\u002Fblog\u002Fprestashop\u002Farchitecture\u002Fsylius-rachat-prestashop-headless-souverainete",[]]