Jump to content

Récupérer les informations du produit dans product-list.tpl


Recommended Posts

Bonjour à tous,

Je suis en train de créer un module qui récupère les informations d'une api pour les afficher dans la fiche produit et dans la liste des produits (product-list.tpl), pour la fiche produit, ça marche nickel, les informations sont récupérées et j'arrive à tout afficher correctement.

Pour la liste des produits, c'est une autre histoire, j'ai créé un hook (ajouté à la base de données, puis mit sur product-list.tpl) et il fonctionne, j'arrive à ajouter des données statiques via ce hook. En revanche, j'aimerais donc savoir comment récupérer les informations du produit affiché dans chaque vignette.  J'ai essayé de faire

        $product = $this->context->controller->getProducts();

mais un seul produit s'affiche à l'écran au lieu des dizaines de produits habituels de la page product-list.tpl, la mise en forme disparait et le reste de la page ne s'affiche pas : image.thumb.png.78d03b167fbc05ddc4d49349219fa89a.png

Y aurait-il une autre fonction qui permet d'afficher les informations d'un produit dans la page product-list.tpl?

 

Merci d'avance :)

Edited by PrestashopUser03 (see edit history)
Link to comment
Share on other sites

Bonjour, merci pour cette réponse.

Concernant le code, c'est ce que j'ai fait dans mon fichier tpl, mais cette ligne :

$product = $this->context->controller->getProduct();

fait tout bugguer une fois que je l'ajoute à mon hook et je ne sais pas pourquoi alors que plus bas sur un autre hook qui s'affiche sur la fiche produit, cette ligne fonctionne parfaitement.

Dans product-list.tpl, j'ai fait ça :

                    {hook h=displayProductList mod="leasingdisplay"}

 

Edited by PrestashopUser03
ajout d'informations (see edit history)
Link to comment
Share on other sites

J'ai bien fait ce que vous venez de me dire, mais en fait, le problème vient seulement de ça :

        $product = $this->context->controller->getProduct();


Ca fait arrêter le chargement de toute la page, savez-vous pourquoi?

 

(en parallèle, j'ai testé avec ce code :    $product = new Product((int)$id, true, (int)$id_lang); et je récupère des informations sur le produit (avec un var_dump)  mais pas le prix ou le manufacturer_name, qui sont les deux informations dont j'ai besoin)

Avez-vous une idée?

Link to comment
Share on other sites

Rien du tout, ça tourne dans le vide et la page ne charge jamais, voici l'intégralité du code :

dans le hook:

 public function hookdisplayProductList($params){
        d($params);
	
		return $this->display(__FILE__, "views/templates/front/tabproduct.tpl");
    }

dans le tpl :

{hook h=displayProductList mod="leasingdisplay" product=$product}

Je précise tout de même que le hook fonctionne, j'ai réussi à passer des paramètres de test aux endroits de mon choix.

 

D'ailleurs, quel est l'équivalent du code de la fiche produit mais pour la page des catégories où se trouve product-list.tpl. Mieux encore, y-a-t-il un document qui liste toutes ces fonctions?

Merci :)

Edited by PrestashopUser03 (see edit history)
Link to comment
Share on other sites

Lorsque je fais ça dans le hook:

    $manufacturer = new Manufacturer((int)$id, (int)$id_lang);
    $nom=$manufacturer->name;
    d($manufacturer);

 

Voilà ce que m'affiche le débug. :

Manufacturer Object ( [
id] => 
[id_manufacturer] => 
[name] => 
[description] => 
[short_description] => 
[id_address] => 
[date_add] => 
[date_upd] => 
[link_rewrite] => 
[meta_title] => 
[meta_keywords] => 
[meta_description] => 
[active] => 

Aucune info n'est apparue, donc, comment faire pour les récupérer svp? Dans la fiche produit, j'ai juste eu à faire

$product = $this->context->controller->getProduct();

  et à appeler le contenu de l'array $product, quel est l'équivalent sur la page catégorie?

 

Merci d'avance

Link to comment
Share on other sites

Il n'y a rien vu que ce n'est pas connecté au produit en cours, c'et justement le but de ce topic, comment récupérer les infos du produit en cours. Je me répète, mais je suis vraiment bloqué sur une ligne toute bête qui serait du même type que  $product = $this->context->controller->getProduct(), mais pour la page catégorie.

Merci beaucoup pour vos réponses en tous cas :)

Link to comment
Share on other sites

1 hour ago, coeos.pro said:

$manufacturer = new Manufacturer((int)$id, (int)$id_lang);

 

tu as quoi comme $id et $id_lang ? as tu essayé de mettre directement des valeurs dans cette ligne ?

Quand je tente en mettant 8 comme id par exemple, j'ai bien l'object d'une marque qui apparait dans le débug. Donc ça fonctionne de cette façon, mais le d($params) ne fonctionne pas. Je suis tout de même bloqué avec le même problème qui est que je ne sais pas comment lier le produit en cours au hook.

Link to comment
Share on other sites

Merci infiniment, ça marche parfaitement. Pour récupérer le prix, j'ai fait

$price=$params['product']['price_without_reduction'];

mais j'ai l'impression de faire quelque chose de sale par rapport à prestashop. Où trouver toutes les fonctions permettant d'appeler les caractéristiques des produits/catégories et co?

 

Pour info, le d($params) ne fonctionnait pas parce que la page sur laquelle je l'ai fait contenait trop de produits et que le navigateur plantait, je l'ai fait sur une catégorie à 7 produits et ça a fonctionné.

Merci en tous cas pour vos aides :)

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