Un configurateur 3D
sur PrestaShop.
2 lignes de code.
<viewer-3dvue> est un Web Component natif. Il s'intègre dans n'importe quel template Smarty : product.tpl, override de module, ou hook personnalisé. Aucun module PrestaShop supplémentaire requis.
{* Dans <head> ou votre layout principal *} <script src="https://cdn.jsdelivr.net/gh/3dvue/api@v4/viewer-3dvue-min.js"></script>
<viewer-3dvue name="monViewer" src="https://app.3dvue.fr/view?p=AB01-CD02" ></viewer-3dvue> {* C'est tout. *}
Prêt en 3 étapes. Pas de module à créer.
Un Web Component natif compatible avec les templates Smarty de PrestaShop 1.7 et 8.x. Aucune dépendance PHP, aucun module à soumettre sur l'Addons Marketplace.
-
1Charger le script via un hook
La méthode recommandée est d'utiliser le hook
displayHeaderdepuis un module custom ou directement dans votre template. Vous pouvez aussi l'inclure viaproduct.tplsi vous intervenez au niveau du thème.Le script CDN ci-dessus est public : pas besoin de l'héberger. L'attributsrcdu composant est l'URL spécifique à votre configurateur, fournie par 3DVue à la livraison du projet.MonModule.php : via hookpublic function hookDisplayHeader() { return '<script src="https://cdn.jsdelivr.net/gh/3dvue/api@v4/viewer-3dvue-min.js"></script>'; } // Ou directement dans votre template Smarty : {* <script src="https://cdn.jsdelivr.net/gh/3dvue/api@v4/viewer-3dvue-min.js"></script> *}
-
2Placer le composant dans product.tpl
Collez la balise dans votre template produit Smarty, dans la colonne gauche ou dans une zone dédiée. Vous pouvez conditionner l'affichage avec
{if}pour ne l'afficher que sur certaines catégories ou références.PrestaShop 8 utilise un nouveau système de templates. La balise fonctionne dans les deux contextes : ancienproduct.tplet nouvelles sections Hummingbird.product.tpl{* Conditionner par ID produit si besoin *} {if $product.id == 42} <viewer-3dvue name="monViewer" src="https://app.3dvue.fr/view?p=AB01-CD02" ></viewer-3dvue> {/if} {* Ou avec debug activé *} <viewer-3dvue name="monViewer" src="https://app.3dvue.fr/view?p=AB01-CD02" debug ></viewer-3dvue>
-
3Brancher les combinaisons PrestaShop
PrestaShop génère les selects de combinaisons dynamiquement. Ajoutez les attributs
viewer-3dvuevia Smarty sur vos selects de combinaisons, ou utilisez l'API JS pour écouter l'événementupdateProductnatif de PrestaShop.product.tpl + JS : combinaisons{* Via attributs HTML sur les selects *} {foreach $product.groups as $group} <select viewer-3dvue="monViewer" viewer-3dvue-change="setMaterial" viewer-3dvue-mesh="1" > {foreach $group.attributes as $attr} <option value="{$attr.id_material}"> {$attr.name} </option> {/foreach} </select> {/foreach}
Zéro JavaScript.
Tout en attributs HTML.
Le composant écoute automatiquement les événements click et change sur tout élément portant les bons attributs. Compatible avec les selects de combinaisons natifs PrestaShop et les modules de swatches.
{foreach $couleurs as $c} <button viewer-3dvue="monViewer" viewer-3dvue-clic="setMaterial" viewer-3dvue-meshs-materials='{{"1":"{$c.id_mat}"}}' > {$c.name} </button> {/foreach}
updateProduct et synchronisez le viewer.const viewer = document.querySelector( 'viewer-3dvue[name="monViewer"]' ); // Écouter les changements de combinaison PS document.addEventListener( 'updateProduct', (e) => { const idMat = e.detail.id_material; viewer.setMaterial({"1": idMat}); } );
Pour les cas avancés.
Contrôle programmatique complet : utile pour synchroniser le viewer avec le système de combinaisons AJAX de PrestaShop, ou pour la capture d'image et l'export BAT.
const viewer = document.querySelector('viewer-3dvue[name="monViewer"]'); // Changer plusieurs matériaux d'un coup viewer.setMaterial({ "1": "0n", "3": "2b" }); // Sur un segment spécifique viewer.setMaterial({ "1": "1a" }, 1);
viewer.captureToBase64(); viewer.addEventListener("onCaptureBase64Complete", (e) => { const { base64 } = e.detail; // Injecter dans un champ caché du formulaire PS document.querySelector('#add-to-cart-or-refresh input[name="config_img"]').value = base64; });
viewer.exportSVG(); viewer.addEventListener("onSVGExportComplete", (e) => { const { path, error } = e.detail; if (!error) console.log("BAT SVG :", path); });
À lire aussi
Ce configurateur dans votre secteur
Référence API, attributs HTML, événements, exemples Smarty PrestaShop. Tout est documenté.
Voir la documentationPas de ticketing automatisé. Vous parlez directement à Matthieu, le développeur qui a conçu l'API. Réponse sous 24h.
Prendre un RDVTestez le configurateur avant d'intégrer. Voyez ce que vos clients verront sur votre boutique PrestaShop.
Voir la démoPrêt à intégrer ?
On s'occupe des modèles 3D.
Vous gérez le code côté PrestaShop, on s'occupe de tout le reste : modélisation, matières, configuration. En 30 minutes on vous dit ce qu'on peut faire.