Swedge Posted May 25, 2009 Share Posted May 25, 2009 Bonjour,je suis en train de faire mes armes sur Prestashop et du coup sur le système Smarty par la même occasion :-)Pour l'instant je souhaiterais simplement afficher l'image du fabriquant sur la fiche produit. Pour cela j'ai trouvé une méthode sur le forum, qui permet de le faire en ajoutant la ligne ci-dessous dans le template (product.tpl): < img src="{$img_manu_dir}{$product_manufacturer->id}-medium.jpg" alt="{$product_manufacturer->name}" /> Cela marche bien mais j'aimerais faire la même chose sous forme de module. Pourquoi ? D'une part pour apprendre, et d'autre part car cela permettrais d'activer ou de déactiver cette fonctionnalité via le Back office.Du coup j'ai fait mes petits tests sur un module que j'ai créé et là je bloque pour récupérer l'id de mon fabriquant dans le .php de mon module. Pour tester mon module j'ai testé de récupérer l'id produit comme ci-dessous: function hookextraright($params) { global $smarty, $link; $id_produit = intval(Tools::getValue('id_product')); $smarty->assign('idproduit' , $id_produit); return $this->display(__FILE__, 'logomarqueproduit.tpl'); } Avec la méthode ci-dessus et en faisant {$idproduit} dans mon fichier .tpl cela m'affiche l'id de mon produit.Moi je veut simplement faire la même chose avec l'id du fabricant de mon produit, afin de pouvoir l'inclure dans ma balise .Si quelqu'un a une idée cela m'aiderait énormément à finir mon module. En plus même si ce n'est pas le module de l'année je garantis de le partager sur le forum lorsqu'il sera fini. Peut être cela en aidera certains...Merci Link to comment Share on other sites More sharing options...
Swedge Posted May 26, 2009 Author Share Posted May 26, 2009 Personne n'a une d'idée ??? C'est rageant parce que je suis sûr que c'est super simple mais là je bloque à mort :-( Link to comment Share on other sites More sharing options...
Swedge Posted May 26, 2009 Author Share Posted May 26, 2009 Bon j'ai trouvé une solution mais elle est loin d'être propre. Je ne passe donc pas encore ce post en "Résolu".Voilà comment j'ai fait. Dans le .php de mon module j'ai mis: function hookextraright($params) { global $smarty; $sql = 'SELECT id_manufacturer FROM `'._DB_PREFIX_.'product` WHERE `id_product` = '.intval(Tools::getValue('id_product')); $req = mysql_query($sql); while($data = mysql_fetch_assoc($req)) {l $smarty->assign('id_manufacturer' , $data['id_manufacturer']); } return $this->display(__FILE__, 'logomarqueproduit.tpl'); } Bon si quelqu'un a plus propre et moins radical à me proposer je suis preneur et j'en serais reconnaissant. Link to comment Share on other sites More sharing options...
Julien Breux Posted May 26, 2009 Share Posted May 26, 2009 Il faut créer un objet Produit, exemple : $produit = new Product(intval(Tools::getValue('id_product')); $smarty->assign('id_manufacturer' , $produit->id_manufacturer); Link to comment Share on other sites More sharing options...
Swedge Posted May 27, 2009 Author Share Posted May 27, 2009 Super ! merci beaucoup c'était simple mais quand on a jamais gouter à la prog orientée objet on est perdu pour un rien.Ps il manque une petite parenthèse dans le code: $produit = new Product(intval(Tools::getValue('id_product'))); $smarty->assign('id_manufacturer' , $produit->id_manufacturer); Link to comment Share on other sites More sharing options...
OlivierDar Posted July 30, 2009 Share Posted July 30, 2009 Merci tout a fait ce que je cherchais Link to comment Share on other sites More sharing options...
Kladin Posted August 26, 2011 Share Posted August 26, 2011 Bonjour, Suite à une recherche intensive sur le net pour faire ce que je veux faire, il semble que ce qui se rapproche le plus du module que je veux, c'est ce que vous avez fait ici. je m'explique, j'aurais besoin d'avoir un module qui affiche les fabricants des produits du magasin sur les page home et produit en footer. J'ai jusqu’à présent réussit à utiliser le module blocmanufacturer pour l'accrocher ou je voulais. J'ai réussi à afficher le résumé de la description et il me manque le logo du fabricant. dans blocmanufacturer.php voilà ce que j'ai mis comme code : function hookLeftColumn($params) { global $smarty, $link; $smarty->assign(array( 'manufacturers' => Manufacturer::getManufacturers(), 'link' => $link, 'text_list' => Configuration::get('MANUFACTURER_DISPLAY_TEXT'), 'text_list_nb' => Configuration::get('MANUFACTURER_DISPLAY_TEXT_NB'), 'form_list' => Configuration::get('MANUFACTURER_DISPLAY_FORM'), 'display_link_manufacturer' => Configuration::get('PS_DISPLAY_SUPPLIERS'), )); global $smarty; $req = mysql_query($sql); while($data = mysql_fetch_assoc($req)) { $smarty->assign('id_manufacturer', $manufacturer_id); } return $this->display(__FILE__, 'blockmanufacturer.tpl'); } Puis function hookHome ($params) { return $this->hookLeftColumn($params); } pour l'afficher dans la bonne page. Ensuite dans blocmanufacturer.tpl voila le code que j'ai modifier pour afficher le block : {if $manufacturers} {if $text_list} <ul class="bullet"> {foreach from=$manufacturers item=manufacturer name=manufacturer_list} {if $smarty.foreach.manufacturer_list.iteration <= $text_list_nb} <li class="{if $smarty.foreach.manufacturer_list.last}last_item{elseif $smarty.foreach.manufacturer_list.first}first_item{else}item{/if}"> {if $manufacturer} <div id="logo_manufacturer"> <a href="{$link->getmanufacturerLink($manufacturer->id, $manufacturer->link_rewrite)|escape:'htmlall':'UTF-8'}" title="{$manufacturer.name|escape:'htmlall':'UTF-8'}"> <img src="{$img_manu_dir}{$manufacturer_id}.jpg" alt="{$manufacturer.name}"> </a> </div> {/if} <a href="{$link->getmanufacturerLink($manufacturer.id_manufacturer, $manufacturer.link_rewrite)}" title="{l s='More about' mod='blockmanufacturer'} {$manufacturer.name}">{$manufacturer.name|escape:'htmlall':'UTF-8'}</a> <p>{$manufacturer.short_description}</p> </li> {/if} {/foreach} </ul> {/if} Le problème vient du fait que le logo ne s'affiche pas car il ne récupère pas l'ID du fabricant. J'ai essayé pleins de choses différentes que j'ai trouvé sur le web, mais rien ne semble fonctionner. Je sens que je suis pas loin de trouver, le problème c'est que je suis pas un développeur donc j'y vais un peu à taton avec mes quelques connaissances. Quelqu'un aurait une idée ? Link to comment Share on other sites More sharing options...
Kladin Posted August 29, 2011 Share Posted August 29, 2011 Petit up. 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