Jump to content
Sign in to follow this  
adnz

Comment récupérer les infos {$product} en cours dans un module ?

Recommended Posts

bonjour à tous,

 

Je suis nouveau sur le forum, et pour dernier recourt , j'aurais besoin de vos lumieres.

Depuis 3 jours je tourne en rond et je ne trouve pas la solution.

 

prestashop : 1.5

 

projet :

j'ai creer un module qui permet d'afficher des blocs html dans le hook séléctionné. (home, left, right, footer), et je dois tester certains critères du produit en cours pour afficher ou non chaque blocs.

 

problème :

dans modules/mon_module/views/templates/hook/mon_module_home.tpl

je n'arrive pas à recupérer les infos de {$product} de smarty !

- comment fait-ont pour recupérer les infos du produit en cours, a l'interieur du module ?

 

action attendu :

affichage de blocs differents selon certains critères du produit en cours

 

ex:

{if $product->condition=="new"}.....{/if}

 

donc j'ai besoin d'accéder aux variables suivantes à partir de mon module (mon_module_home.tpl) :

 

Smarty_Variable Object (3)
->value = Product Object (69)
   ->tax_name = "deprecated"
   ->tax_rate = 19.6
   ->id_manufacturer = "1"
   ->id_supplier = "1"
   ->id_category_default = "3"
   ->id_shop_default = "1"
   ->manufacturer_name = "Apple Computer, Inc"
   ->supplier_name = "AppleStore"
   ->name = "iPod Nano"

  ->condition = "new"

   etc....

   etc....

   etc....

 

J'espère que j'ai pas trop cafouiller dans mes explications.

dès que le module fonctionne, je serais ravis de participer à la communauté en postant mon module si ça peu dépanner quelqu'un.

 

merci d'avance pour vos lumieres.

Edited by adnz (see edit history)

Share this post


Link to post
Share on other sites

re-salut...

 

bon j'ai trouver comment les recupérer dans mon .tpl en faisant {$mesproduits->condition}

 

j'ai modifier mon php du module en ajoutant les lignes en rouge :

 

public function hookDisplayFooterProduct()

{

    global $cookie, $smarty, $ProObject;

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

    $smarty->assign('mesproduits', "".$ProObject."");

   

    return $this->display(__FILE__, 'mon_module_footerproduct.tpl');

}

 

Dans la console debug de smarty j'ai bien mon objet "mesproduits" avec toutes mes variables du produits en cours ... donc c'est ok ....

 

mais cette fois ci,à la place du site j'ai une page blanche qui s'affiche !

 

si quelqu'un sais pourquoi !

merci.

 

je continu à chercher !!!

Edited by adnz (see edit history)

Share this post


Link to post
Share on other sites

[RESOLU]

bon j'ai trouvé voici la solution pour recupérer {$product} à l'interieur d'un module !

 

dans le fichier php du module j'ai mis les lignes en rouge :

 

public function hookDisplayFooterProduct()

{

    global $cookie, $smarty, $ProObject;

 

    $TempProObject = $this->context->controller->getProduct();
    $ProObject = (array)$TempProObject;
    $smarty->assign('mesproduits', $ProObject);

 

    return $this->display(__FILE__, 'mon_module_footerproduct.tpl');

}

 

Dans mon fichier .tpl mon_module_footerproduct.tpl, pour afficher l'objet transformer en array :

 

{$mesproduits['condition]}

ou

{$mesproduits['price]}

ou

{$mesproduits['nom de l'index qu'on veut afficher disponible dans les variables debug de smarty]}

 

 

Et voila comme ça je peux faire un module qui affiche des infos en fonction des criètes du produits en cour (afficher dans la page) ...

Edited by adnz (see edit history)

Share this post


Link to post
Share on other sites

[RESOLU]

bon j'ai trouvé voici la solution pour recupérer {$product} à l'interieur d'un module !

 

dans le fichier php du module j'ai mis les lignes en rouge :

 

public function hookDisplayFooterProduct()

{

    global $cookie, $smarty, $ProObject;

 

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

    $ProObject = (array)$TempProObject;

    $smarty->assign('mesproduits', $ProObject);

 

    return $this->display(__FILE__, 'mon_module_footerproduct.tpl');

}

 

Dans mon fichier .tpl mon_module_footerproduct.tpl, pour afficher l'objet transformer en array :

 

{$mesproduits['condition]}

ou

{$mesproduits['price]}

ou

{$mesproduits['nom de l'index qu'on veut afficher disponible dans les variables debug de smarty]}

 

 

Et voila comme ça je peux faire un module qui affiche des infos en fonction des criètes du produits en cour (afficher dans la page) ...

Bonjour (après la guerre certes).

 

Juste pour dire que le cast en array n'est pas obligatoire, à mon avis l'erreur de la "page blanche" (active en mode dev dans config/config.inc.php si tu veux les voir) est juste que tu as cherché à appeler tes variables dans smarty en tableau alors que c'étaient des objets.

 

Pour faire simple et tenter une petite optimisation, tu gardes la méthode de hook (hookDisplayFooterProduct) comme dans ton 2e post, et tu appelles dans smarty avec la flèche au lieu du tableau.

 

{$mesproduits['condition']} deviendrait ainsi {$mesproduits->condition}

Share this post


Link to post
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
Sign in to follow this  

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More