Jump to content

Comment récupérer une variable js dans template page produit ?


Recommended Posts

Bonjour,

J'utilise un ERP connecté à Prestashop 1.7 pour la gestion des stocks. L'ERP envoit des données à  Prestashop et inversement en utilisant le webservice.

Problématique : Je souhaite autoriser / empêcher la commande / afficher un message de disponibilité (message si hors stock) différent en fonction des déclinaisons, ce qui n'est pas possible nativement avec Prestashop. Ce paramétrage se fait au niveau des produits.

J'ai rajouté une colonne availability_message dans la table ps_stock_available dans laquelle l'ERP envoie un message de disponibilité pour chaque produit et déclinaison.

J'arrive bien à récupérer l'info sur mes pages produits grâce à un override des classes StockAvailable et Product.

Dans la classe Product je rajoute ce code :

$row['available_message'] = StockAvailable::getAvailabilityMessage(
         (int) $row['id_product'],
         $id_product_attribute
);

Ensuite dans mon template product-add-to-cart.tpl j'utilise la variable {$product.available_message}.

Mon code fonctionne, lorsque je vais sur une page produit le message s'affiche bien, mais le problème est que lorsque je change de déclinaison le message ne s'actualise pas.

Je ne trouve pas dans quel fichier js je dois rajouter cette variable, apparemment ce n'est pas dans product.js.

Normalement c'est le même principe que pour la référence ou le code EAN des déclinaisons qui s'actualisent lorsqu'on change de déclinaison.

Link to comment
Share on other sites

Bonjour,

J'ai réussi à résoudre le problème :

Le seul moyen pour que le message s'actualise est de placer la variable {$product.available_message} à l'intérieur de <span id="product-availability">

Si elle est à l'extérieur de ce span, ça ne fonctionne pas.

Par contre,  je ne sais pas comment faire pour déplacer une variable de déclinaison dans le template sans perdre l'actualisation javascript.

Par exemple, je souhaiterais déplacer la référence {$product.reference_to_display} qui se trouve dans product-details.tpl en dessous du titre produit dans product.tpl.

Mais je suis confronté au même problème : la référence ne s'actualise pas lorsque je change de déclinaison.

Link to comment
Share on other sites

  • 3 weeks later...
  • 2 weeks later...

Lorsque je la déplace en javascript c'est le même problème.

Je rajoute le code suivant en dessous du h1 dans mon template produit :

<div class="product-reference product-ref hide">
        <label class="label">{l s='Réf.' d='Shop.Theme.Catalog'}</label>
        <span class="sku">{$product.reference_to_display}</span>
</div>

Puis je rajoute la ligne suivante dans mon javascript :

$('.product-ref span.sku').append($('.product-reference span'));

Cela fonctionne j'accède au produit, mais lorsque je clique sur une déclinaison, la référence ne s'actualise pas.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...