Jump to content

[Résolu] Récupérer ID produit dans un .tpl


Recommended Posts

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  :blink: (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 by b3drik (see edit history)
Link to comment
Share on other sites

 

... 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

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

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

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 by b3drik (see edit history)
Link to comment
Share on other sites

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

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

 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

ç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

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"

  • Like 1
Link to comment
Share on other sites

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

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...