Passer au contenu principal

Intégrez vos widgets sur vos pages produits en une seule intégration

Ajouter un widget produit dans prestashop

Mis à jour il y a plus de 5 mois

Prérequis

- Accùs administrateur à l’interface PrestaShop.

- AccĂšs au serveur d’hĂ©bergement (SFTP/SSH) ou Ă  un dĂ©pĂŽt Git pour dĂ©ployer les fichiers du thĂšme.

- Idéalement, intervention par votre agence ou votre équipe technique.

Recommandation
Travaillez sur un environnement de prĂ©production et sauvegardez le thĂšme avant toute modification. PrivilĂ©giez un thĂšme enfant pour Ă©viter d’écraser vos changements lors d’une mise Ă  jour.

1) Télécharger le thÚme

  • Il est possible de rĂ©cupĂšrer les fichiers du thĂšme Prestashop.

    1. Depuis l’admin PrestaShop, Apparence ⇒ ThĂšme & logo → Exporter le thĂšme actif (coin supĂ©rieur droit).

    2. Depuis le serveur

      Récupérez le répertoire du thÚme directement dans les fichiers (ex. themes/<votre_theme>).

2) Modifier le thĂšme

2.1 Identifier le template Ă  mettre Ă  jour

Selon la page ciblée, localisez le fichier adéquat. Exemples pour les thÚmes Classic / Hummingbird :

  • Fiche produit : themes/<votre_theme>/templates/catalog/_partials/product-additional-info.tpl

  • CatĂ©gorie / listing : themes/<votre_theme>/templates/catalog/listing/category.tpl

2.2 Choisir la position dans le code

InsĂ©rez le widget Ă  l’endroit prĂ©cis oĂč il doit apparaĂźtre dans le template.

Astuce : repérez un élément ou un conteneur existant (classe CSS ou bloc Smarty) pour positionner le widget correctement.

2.3 Intégrer le code JOIN

Étapes :

  1. Récupérez le code du widget dans le JOIN Studio, onglet Intégration du widget.

  2. Collez ce code dans le template ciblĂ© et encadrez-le avec les balises {literal} 
 {/literal} pour Ă©viter l’interprĂ©tation par Smarty.

  3. Remplacez toute occurrence de <PRODUCT_ID> par {/literal}{$product.id_product}{literal} afin d’injecter dynamiquement l’ID produit PrestaShop.

Attention, l’id produit prestashop doit matcher la clĂ© offerId ou itemGroupId du merchant center connectĂ© Ă  JOIN. Si ce n’est pas le cas, c’est a vous de modifier ce code afin d’injecter le bon id.

Exemple de code final :

<script>function sendAudienceData(a){window.jDataLayer=window.jDataLayer||[],window.jDataLayer.push({type:"audience",data:a})}</script>
<script>
document.addEventListener("DOMContentLoaded", () => {
const productId = "{/literal}{$product.id_product}{literal}"; /* <-- Dynamic product id */
const baseUrl = "https://join-stories.com/stories/widgets/page-produit";
const script = document.createElement("script");
script.setAttribute("src", baseUrl + "/" + productId + ".js"); /**Needed attribute for the script to works*/
script.setAttribute("type", "text/javascript");
script.setAttribute("data-join-widget-id", "join-widget-page-produit");
script.setAttribute("data-join-widget-alias", "page-produit"); /**Handle error & fallback*/
script.onerror = () => {
script.remove(); const fallback = document.createElement("script");
fallback.setAttribute("src", baseUrl + "/index.js");
fallback.setAttribute("type", "text/javascript");
fallback.setAttribute("data-join-widget-id", "join-widget-page-produit");
fallback.setAttribute("data-join-widget-alias", "page-produit");
document.head.appendChild(fallback);
};
document.head.appendChild(script); });
</script> <div id="join-widget-page-produit" style="display:block;"></div> <style> #join-widget-page-produit { margin: 5px 2px; min-height: 114px; width: 100%; } @media (min-aspect-ratio: 3/4) { #join-widget-page-produit { min-height: 132px; } } </style> {/literal}

3) Déployer et vider le cache

  1. Déployez les modifications du thÚme sur le serveur (SFTP/CI).

  2. Videz le cache pour prendre en compte les changements :

    ParamĂštres avancĂ©s → Performances → Vider le cache.

  3. Si la compilation Smarty est activée, forcez une recompilation si nécessaire.

Avez-vous trouvé la réponse à votre question ?