Sébastien L Posted March 28, 2014 Share Posted March 28, 2014 (edited) Bonjour, j'essaye en vain d'ajouter le nom du fabricant/marque à côté du nom d'un produit figurant dans un pack. Le code utilisé (je suis sous PS 1.5.6.0) est : {if $product.id_manufacturer} Il fonctionne bien pour les produits listés dans Product-list.tpl, mais pas dans les produits listés dans un pack. Ce qui est bizarre, c'est que j'arrive cependant à afficher l'image du fournisseur en utilisant le code suivant : {if $product.id_manufacturer}{capture assign='t_file'}img/m/{$product.id_manufacturer}-small_default.jpg{/capture}{if $t_file|file_exists}<a href="{$link->getPageLink('manufacturer.php',true)}?id_manufacturer={$product.id_manufacturer}"><img src="{$img_manu_dir}{$product.id_manufacturer}-small_default.jpg" class="img_manuf" /></a>{/if}{/if} Une idée, une solution à ce problème ? Faut-il ajouter une variable dans packitems ? merci par avance Edited March 29, 2014 by slett (see edit history) Link to comment Share on other sites More sharing options...
loulou66 Posted March 28, 2014 Share Posted March 28, 2014 Coucou je penjse que c'est {$product.manufacturer_name} pour le nom @++ Loulou66 Link to comment Share on other sites More sharing options...
Sébastien L Posted March 28, 2014 Author Share Posted March 28, 2014 Coucou je penjse que c'est {$product.manufacturer_name} pour le nom @++ Loulou66 Bonjour Loulou66, comme indiqué dans mon post, cette solution ne fonctionne pas dans la liste des produits d'un pack. Elle fonctionne bien dans product-list.tpl, mais ne s'affiche pas s'il y a des produits dans le pack. Une idée ? Cordialement, SL Link to comment Share on other sites More sharing options...
semor Posted March 29, 2014 Share Posted March 29, 2014 Ca devrait t'aider (si c'est bien ça que tu veux dans product.tpl) : {if $packItems|@count > 0} {foreach from=$packItems item=packItem} <a href="{$link->getPageLink('manufacturer.php',true)}?id_manufacturer={$packItem.id_manufacturer}" style="margin-right:5px"><img src="{$img_manu_dir}{$packItem.id_manufacturer|escape:'htmlall':'UTF-8'}-medium_fab.jpg" alt="$product->name" /></a> {/foreach} {elseif $product->id_manufacturer} <a href="{$link->getPageLink('manufacturer.php',true)}?id_manufacturer={$product->id_manufacturer}"><img src="{$img_manu_dir}{$product->id_manufacturer|escape:'htmlall':'UTF-8'}-medium_fab.jpg" alt="$product->name" /></a> {/if} Link to comment Share on other sites More sharing options...
Sébastien L Posted March 29, 2014 Author Share Posted March 29, 2014 (edited) Ca devrait t'aider (si c'est bien ça que tu veux dans product.tpl) : {if $packItems|@count > 0} {foreach from=$packItems item=packItem} <a href="{$link->getPageLink('manufacturer.php',true)}?id_manufacturer={$packItem.id_manufacturer}" style="margin-right:5px"><img src="{$img_manu_dir}{$packItem.id_manufacturer|escape:'htmlall':'UTF-8'}-medium_fab.jpg" alt="$product->name" /></a> {/foreach} {elseif $product->id_manufacturer} <a href="{$link->getPageLink('manufacturer.php',true)}?id_manufacturer={$product->id_manufacturer}"><img src="{$img_manu_dir}{$product->id_manufacturer|escape:'htmlall':'UTF-8'}-medium_fab.jpg" alt="$product->name" /></a> {/if} Merci Semor pour ton code, cependant celui-ci ne répond pas tout à fait à mes besoins. J'ai posé la même question sur le forum anglais, et Rocky modérateur de ce forum m'a donné la solution : {Manufacturer::getNameById($product.id_manufacturer)} Si cela peut aider une personne ayant la même problématique que moi. Edited March 29, 2014 by slett (see edit history) Link to comment Share on other sites More sharing options...
loulou66 Posted March 29, 2014 Share Posted March 29, 2014 Coucou Bien vu semor malheureusement dans le pack (d'apres le debug de ps) il n'y a pas le nom du fournisseur mais seulement l'id il va falloir override la fonction "getItemTable" de la la classe "Pack" qui est appeller dans le controler "productcontroler" (Pack::getItemTable) @++ Loulou66 Link to comment Share on other sites More sharing options...
semor Posted March 29, 2014 Share Posted March 29, 2014 (edited) Merci Semor pour ton code, cependant celui-ci ne répond pas tout à fait à mes besoins. J'ai posé la même question sur le forum anglais, et Rocky modérateur de ce forum m'a donné la solution : {Manufacturer::getNameById($product.id_manufacturer)} Si cela peut aider une personne ayant la même problématique que moi. Autant pour moi je n'avais pas vu que tu voulais juste le nom, j'aurais pu te donner le code Tant mieux si tu l'as, pense à mettre [RESOLU] dans le nom du topic Coucou Bien vu semor malheureusement dans le pack (d'apres le debug de ps) il n'y a pas le nom du fournisseur mais seulement l'id il va falloir override la fonction "getItemTable" de la la classe "Pack" qui est appeller dans le controler "productcontroler" (Pack::getItemTable) @++ Loulou66 Hum sur le coup je n'ai pas compris ton message Loulou66, je sors l'id fabricant {$packItem.id_manufacturer} Ce code permet d'afficher les images des fabricants des produits du pack. Ma fonction 'getItemTable' (je ne me rappelle pas l'avoir modifier pour ma part, et aucun override) : public static function getItemTable($id_product, $id_lang, $full = false) { if (!Pack::isFeatureActive()) return array(); $sql = 'SELECT p.*, product_shop.*, pl.*, MAX(image_shop.`id_image`) id_image, il.`legend`, cl.`name` AS category_default, a.quantity AS pack_quantity, product_shop.`id_category_default`, a.id_product_pack FROM `'._DB_PREFIX_.'pack` a LEFT JOIN `'._DB_PREFIX_.'product` p ON p.id_product = a.id_product_item LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON p.id_product = pl.id_product AND pl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('pl').' LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product`)'. Shop::addSqlAssociation('image', 'i', false, 'image_shop.cover=1').' LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$id_lang.') '.Shop::addSqlAssociation('product', 'p').' LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON product_shop.`id_category_default` = cl.`id_category` AND cl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('cl').' WHERE product_shop.`id_shop` = '.(int)Context::getContext()->shop->id.' AND a.`id_product_pack` = '.(int)$id_product.' GROUP BY product_shop.id_product'; $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); foreach ($result as &$line) $line = Product::getTaxesInformations($line); if (!$full) return $result; $array_result = array(); foreach ($result as $prow) if (!Pack::isPack($prow['id_product'])) $array_result[] = Product::getProductProperties($id_lang, $prow); return $array_result; } Edited March 29, 2014 by semor (see edit history) Link to comment Share on other sites More sharing options...
loulou66 Posted March 29, 2014 Share Posted March 29, 2014 Coucou Eureka !!! alors créer un fichier Pack.php pour l'override avec dedans <?php class Pack extends PackCore { public static function getItemTable($id_product, $id_lang, $full = false) { if (!Pack::isFeatureActive()) return array(); $sql = 'SELECT p.*, product_shop.*, pl.*, MAX(image_shop.`id_image`) id_image, il.`legend`, cl.`name` AS category_default, a.quantity AS pack_quantity, product_shop.`id_category_default`, a.id_product_pack, m.`name` AS manufacturer_name FROM `'._DB_PREFIX_.'pack` a LEFT JOIN `'._DB_PREFIX_.'product` p ON p.id_product = a.id_product_item LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON p.id_product = pl.id_product AND pl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('pl').' LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product`)'. Shop::addSqlAssociation('image', 'i', false, 'image_shop.cover=1').' LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON (p.`id_manufacturer` = m.`id_manufacturer`) LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$id_lang.') '.Shop::addSqlAssociation('product', 'p').' LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON product_shop.`id_category_default` = cl.`id_category` AND cl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('cl').' WHERE product_shop.`id_shop` = '.(int)Context::getContext()->shop->id.' AND a.`id_product_pack` = '.(int)$id_product.' GROUP BY product_shop.id_product'; $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); foreach ($result as &$line) $line = Product::getTaxesInformations($line); if (!$full) return $result; $array_result = array(); foreach ($result as $prow) if (!Pack::isPack($prow['id_product'])) $array_result[] = Product::getProductProperties($id_lang, $prow); return $array_result; } } enregistrer le dans /override/classes/ ensuite dans ton theme/theme/product.tpl recherche <p>{$packItem.description_short}</p> ajoute ou tu veut avant/apres cette ligne <p>{$packItem.manufacturer_name}</p> si tu veut aussi le fabricant dans la liste des produit du pack en bas de la page produit cela de passe dans le product-list.tpl avec <p>{if isset($product.pack_quantity) && $product.pack_quantity}{$product.manufacturer_name}{/if}</p> le fabricant apparaîtras que dans la liste des produit du pack mais pas dans les catégories qui utilisent le même fichier Test sous PS 1.5.6.2 @++ Loulou66 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