b3drik Posted March 25, 2016 Share Posted March 25, 2016 (edited) Bonjour ! Je cherche un peu d'aide. J'utilise un thème sur une v1.6.1.3 et quand on se trouve dans une page produit, j'aimerai afficher une bannière correspondante au produit. Cette bannière est d'abord utilisée dans un .TPL, et ce .TPL je veux le modifier donc. Et je galère pour récupérer l'ID du produit ! D'habitude je fais {$smarty.get.id_product} ou {$id_product} Mais {$id_product} ne renvoi rien, et {$smarty.get.id_product} m'affiche un ID aléatoire parmi tous les produits de la catégorie (ou de la boutique je ne sais pas) Quelqu'un saurait m'aiguiller? j'ai lu comme quoi fallait passer par le controleur PHP mais je ne sais pas du tout comment m'y prendre J'ai hâte de vous lire, merci. Edited March 30, 2016 by b3drik (see edit history) Link to comment Share on other sites More sharing options...
xaxa Posted March 25, 2016 Share Posted March 25, 2016 Salut, {$product->id|intval} ? Link to comment Share on other sites More sharing options...
coeos.pro Posted March 25, 2016 Share Posted March 25, 2016 ... quand on se trouve dans une page produit, ... ...m'affiche un ID aléatoire parmi tous les produits de la catégorie faut savoir, tu es sur une page produit, ou une page catégorie ? sinon rajoutes {debug} dans le tpl, un pop up s'affichera avec les variables dispo ainsi que les valeurs, comme par exemple {$product.id_product} Link to comment Share on other sites More sharing options...
b3drik Posted March 25, 2016 Author Share Posted March 25, 2016 Alors, pour répondre à une question importante, je suis bien dans une page produit ! Je viens de faire quelques test : {$product->id|intval} -> 0 {$product.id_product} -> (pas de réponse) {debug} -> (la popup se lance mais elle est vide! -page blanche) Link to comment Share on other sites More sharing options...
b3drik Posted March 25, 2016 Author Share Posted March 25, 2016 faut savoir, tu es sur une page produit, ou une page catégorie ? Je comprends ta confusion, ce que j'ai voulu dire c'est que dans ma boutique en test, j'ai 2 produits : un avec ID = 8 et un avec ID = 12 (dans la même catégorie, mais.. on s'en fou) Et ben {$smarty.get.id_product} renvoi un coup 8 et un coup 12, de manière aléatoire. Enfin pour moi c'est aléatoire puisque quand je fait un refresh de la page c'est parfois 8 et parfois 12.. Link to comment Share on other sites More sharing options...
xaxa Posted March 25, 2016 Share Posted March 25, 2016 Dans quel fichier tpl? Link to comment Share on other sites More sharing options...
b3drik Posted March 25, 2016 Author Share Posted March 25, 2016 (edited) Dans quel fichier tpl? C'est un fichier lié au thème que j'ai acheté : www/modules/csstaticblocks/views/templates/hook/csstaticblocks_productImage.tpl Pour info j'ai tenté de le placer dans le dossier modules du thème (www/themes/nom_du_theme/modules) mais j'ai les mêmes résultats. Je suis certains que ce fichier .tpl est bien affiché dans ma page produit, j'ai fait d'autres tests concluants. Edited March 25, 2016 by b3drik (see edit history) Link to comment Share on other sites More sharing options...
b3drik Posted March 29, 2016 Author Share Posted March 29, 2016 Un petit Up après ce long week-end Sinon, même si ce n'est certainement pas terrible, N'est-il pas possible de faire passer une variable à partir de header.tpl pour ensuite pouvoir récupérer cet ID ? Link to comment Share on other sites More sharing options...
xaxa Posted March 29, 2016 Share Posted March 29, 2016 Peut-être tu trouveras des pistes ici : https://www.prestashop.com/forums/topic/485186-recuperation-id-product-dans-product-list-pour-include-php/ Link to comment Share on other sites More sharing options...
b3drik Posted March 29, 2016 Author Share Posted March 29, 2016 Merci xaxa mais je ne suis pas du tout à l'aise avec ces déclaration de classes.. Bon déjà j'ai réussi à faire fonctionner {debug} (j'avais un pb avec Chrome qui m'affichait une page blanche) Mais je n'ai pas de variable qui me récupère l'ID du produit, je vais donc devoir passer par les classes. Je vais essayer de trouver quelques tutos.. Link to comment Share on other sites More sharing options...
coeos.pro Posted March 29, 2016 Share Posted March 29, 2016 Et ben {$smarty.get.id_product} renvoi un coup 8 et un coup 12, de manière aléatoire. Enfin pour moi c'est aléatoire puisque quand je fait un refresh de la page c'est parfois 8 et parfois 12.. ça ressemble à un problème de cache smarty, désactive le cache smarty et vide le cache. Si tu as d'autres caches désactive les pour voir. Link to comment Share on other sites More sharing options...
b3drik Posted March 30, 2016 Author Share Posted March 30, 2016 ça ressemble à un problème de cache smarty, désactive le cache smarty et vide le cache. Si tu as d'autres caches désactive les pour voir. Tu as mis le doigt sur quelque chose de très intéressant ! Lorsque je désactive le cache Smarty, je récupère le bon ID à chaque fois. Ensuite j'ai vidé le cache Smarty (par le biais du bouton "vider le cache" de l'administration), j'ai réactivé le cache (en mode "Vider le cache chaque fois qu'il y a une modification"). Et là rebelotte ! L'ID récupéré n'est pas le bon. J'ai re-testé plusieurs fois cette opération ci-dessus pour être sûr. Une idée ?? Link to comment Share on other sites More sharing options...
coeos.pro Posted March 30, 2016 Share Posted March 30, 2016 En fait quand tu affiches la page, le contenu est mis en cache, donc si tu as id_product=8, c'est mis en cache, et si tu va sur la page id_product=12, il y aura quand même affiché 8. Soit tu supprimes le cache pour ce tpl dans le module que tu fais, soit tu change le "cacheId" 1 Link to comment Share on other sites More sharing options...
b3drik Posted March 30, 2016 Author Share Posted March 30, 2016 OK !Alors j'ai pas mal fouillé pour trouver ce que j'avais besoin, mais j'ai l'impression que ça fonctionne correctement maintenant. En espérant que ce soit la bonne démarche, voici ce que j'ai fait : (ça pourrait peut-être aider d'autres personnes)Dans le fichier .PHP du module (modules>nom_du_module/), j'ai supprimé les lignes if (!$this->isCached('nom_du_template.tpl', $this->getCacheId('nom_du_template'))) { } et remplacé return $this->display(__FILE__, 'nom_du_template.tpl', $this->getCacheId('nom_du_template')); par return $this->display(__FILE__, 'nom_du_template.tpl'); Voila, c'est certainement décousu, je ne suis pas un expert PHP/Smarty. Coeos, je te remercie car je crois que ça va me servir cette histoire de gestion de cache dans un module. (j'avais d'autres problèmes avec d'autres modules) Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now