maxi64000 Posted July 9, 2014 Share Posted July 9, 2014 Bonjour, lorsque j'affiche la liste des produits d'une catégorie, il faudrait pouvoir afficher uniquement les produits dont le id_category_default est différent de 94... Or je ne sais pas ou placer cette exception. Quelqu'un a t-il une idée? Merci d'avance. Link to comment Share on other sites More sharing options...
UsernameAlreadyTaken Posted July 9, 2014 Share Posted July 9, 2014 maxi64000,Tu peux me montrer le contenu de ton product-list.tpl ? Link to comment Share on other sites More sharing options...
maxi64000 Posted July 9, 2014 Author Share Posted July 9, 2014 {if isset($products)} <!-- Products list --> <div id="product_list" class="clearfix"> {foreach from=$products item=product name=products} {if Configuration::get('productlistcols')>1&&($product@iteration%Configuration::get('productlistcols')==1)} <div class="clearfix product-block"> {/if} <div class="col-sm-{(12/Configuration::get('productlistcols'))} ajax_block_product {if ($product@iteration%Configuration::get('productlistcols')!=0 && $smarty.foreach.products.last)} border-style {/if}"> <div class="product-container"> <div class="image" style="position: relative;"> <a href="{$product.link|escape:'htmlall':'UTF-8'}" class="product_img_link" title="{$product.name|escape:'htmlall':'UTF-8'}"> {assign var='specific_prices' value=$product.specific_prices} {if $specific_prices.reduction_type == 'percentage' && ($specific_prices.from == $specific_prices.to OR ($smarty.now|date_format:'%Y-%m-%d %H:%M:%S' <= $specific_prices.to && $smarty.now|date_format:'%Y-%m-%d %H:%M:%S' >= $specific_prices.from))} <p id="reduction_percent" class="discountcss p_reduc_vignette"> <span id="reduction_percent_display" class="reduc_vignette"> -{$specific_prices.reduction*100|floatval}% </span> </p> {/if} <img class="img-responsive" src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'home_default')|escape:'html'}" alt="{if !empty($product.legend)}{$product.legend|escape:'htmlall':'UTF-8'}{else}{$product.name|escape:'htmlall':'UTF-8'}{/if}" title="{if !empty($product.legend)}{$product.legend|escape:'htmlall':'UTF-8'}{else}{$product.name|escape:'htmlall':'UTF-8'}{/if}" {if isset($homeSize)} width="{$homeSize.width}" height="{$homeSize.height}"{/if} /> {if isset($product.new) && $product.new == 1}<span class="new">{l s='New'}</span>{/if} </a> </div> <div class="product-meta"> <h3 class="name">{if isset($product.pack_quantity) && $product.pack_quantity}{$product.pack_quantity|intval|cat:' x '}{/if}<a href="{$product.link|escape:'htmlall':'UTF-8'}" title="{$product.name|escape:'htmlall':'UTF-8'}">{$product.name|truncate:35:'...'|escape:'htmlall':'UTF-8'}</a></h3> <div class="description">{$product.description_short|strip_tags:'UTF-8'|truncate:240:'...'}</div> {if (!$PS_CATALOG_MODE AND ((isset($product.show_price) && $product.show_price) || (isset($product.available_for_order) && $product.available_for_order)))} <div class="content_price"> {if isset($product.show_price) && $product.show_price && !isset($restricted_country_mode)}<span class="price">{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if} {if $priceDisplay == 1}{l s='tax excl.'}{else}{l s='tax incl.'}{/if}</span>{/if} <span class="price-discount price_reduc">{if $product.reduction}{convertPrice price=$product.price_without_reduction} HT{else}<br>{/if}</span> </div> <div id="location_3_ans"> {assign var="loc5ans" value=0} {math equation="(prixVente * 0.06) / 3" prixVente=$product.price_tax_exc assign=loc5ans} <span class="texte_loc">{l s='Location sur 5 ans : '}</span><span class="prix_loc">{convertPrice price=$loc5ans} {l s='HT/mois'}</span> </div> {if isset($product.available_for_order) && $product.available_for_order && !isset($restricted_country_mode)}<span class="availability">{if ($product.allow_oosp || $product.quantity > 0)}{l s='Available'}{elseif (isset($product.quantity_all_versions) && $product.quantity_all_versions > 0)}{l s='Product available with different options'}{else}<span class="warning_inline">{l s='Out of stock'}</span>{/if}</span>{/if} {if isset($product.online_only) && $product.online_only}<span class="online_only">{l s='Online only'}</span>{/if} {/if} {if isset($product.on_sale) && $product.on_sale && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE}<span class="on_sale">{l s='On sale!'}</span> {elseif isset($product.reduction) && $product.reduction && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE}{*<span class="discount">{l s='Reduced price!'}*}</span>{/if} </div> <div class="product_bottom"> {if ($product.id_product_attribute == 0 || (isset($add_prod_display) && ($add_prod_display == 1))) && $product.available_for_order && !isset($restricted_country_mode) && $product.minimal_quantity <= 1 && $product.customizable != 2 && !$PS_CATALOG_MODE} {if ($product.allow_oosp || $product.quantity > 0)} {if isset($static_token)} <a class="button ajax_add_to_cart_button exclusive" rel="ajax_id_product_{$product.id_product|intval}" href="{$link->getPageLink('cart',false, NULL, "add=1&id_product={$product.id_product|intval}&token={$static_token}", false)|escape:'html'}" title="{l s='Add to cart'}"><span></span>{l s='Add to cart'}</a> {else} <a class="button ajax_add_to_cart_button exclusive" rel="ajax_id_product_{$product.id_product|intval}" href="{$link->getPageLink('cart',false, NULL, "add=1&id_product={$product.id_product|intval}", false)|escape:'html'}" title="{l s='Add to cart'}"><span></span>{l s='Add to cart'}</a> {/if} {else} <span class="exclusive"><span></span>{l s='Add to cart'}</span> {/if} {/if} <a class="button lnk_view" href="{$product.link|escape:'htmlall':'UTF-8'}" title="{l s='View'}">{l s='View'}<span class="icon-play"></span></a> {if isset($comparator_max_item) && $comparator_max_item} <p class="compare"> <input type="checkbox" class="comparator" id="comparator_item_{$product.id_product}" value="comparator_item_{$product.id_product}" {if isset($compareProducts) && in_array($product.id_product, $compareProducts)}checked="checked"{/if} autocomplete="off"/> <label for="comparator_item_{$product.id_product}">{l s='Select to compare'}</label> </p> {/if} </div> </div> </div> {if Configuration::get('productlistcols')>1&&($product@iteration%Configuration::get('productlistcols')==0||$smarty.foreach.products.last)} </div> {/if} {/foreach} </div> <!-- /Products list --> {/if} Link to comment Share on other sites More sharing options...
maxi64000 Posted July 9, 2014 Author Share Posted July 9, 2014 (edited) merci pour la réponse rapide. je ne pense pas que le problème puisse être réglé dans le product_list mais plutôt dans la requête SQL qui va chercher les produits en BDD. Edited July 9, 2014 by maxi64000 (see edit history) Link to comment Share on other sites More sharing options...
UsernameAlreadyTaken Posted July 9, 2014 Share Posted July 9, 2014 (edited) merci pour la réponse rapide. je ne pense pas que le problème puisse être réglé dans le product_list mais plutôt dans la requête SQL qui va chercher les produits en BDD. Tu peux aussi effectivement le faire via requete SQL en incluant la condition dans la clause "WHERE" ( tu réduiras alors le nombre de résultats de la requete ) ou alors filtrer dans le product-list en changeant {if Configuration::get('productlistcols')>1&&($product@iteration%Configuration::get('productlistcols')==1)} par {if (Configuration::get('productlistcols')>1&&($product@iteration%Configuration::get('productlistcols')==1))&&($product.id_category_default!=94)} ça devrait aussi faire l'affaire Edited July 9, 2014 by UsernameAlreadyTaken (see edit history) Link to comment Share on other sites More sharing options...
maxi64000 Posted July 9, 2014 Author Share Posted July 9, 2014 non le problème n'est pas résolue... :'( en fait pour ne pas casser le CSS du product_list je pense que la seul solution est de modifier la requête... Le problème c'est que je ne sais pas ou et comment... Link to comment Share on other sites More sharing options...
UsernameAlreadyTaken Posted July 9, 2014 Share Posted July 9, 2014 non le problème n'est pas résolue... :'( en fait pour ne pas casser le CSS du product_list je pense que la seul solution est de modifier la requête... Le problème c'est que je ne sais pas ou et comment... ça a "cassé" le css ?? Quel comportement ça a eu sur la page "liste de produits" ? en fait le seul soucis en modifiant la requête serait de ne plus jamais afficher ces produits de la categorie 94, en faisant dans le .tpl on les garde quand même au cas où on voudrait les afficher sur une autre page (pour une raison x ou y) Si tu veux que j'y jette un oeil tu peux me donner accès ftp en privé Link to comment Share on other sites More sharing options...
maxi64000 Posted July 9, 2014 Author Share Posted July 9, 2014 DSL mais je ne peu pas donner les accès FTP je suis stage de dev et c'est un site pro que l'agence dans laquelle je bosse modifie en prod. merci de ton aide et je pense que tu a raison sur le fait qu'une modification du .tpl est mieu... je continue de tester et fais signe une fois la solution trouvé (pour aider ceux qui auraient le même problème) Link to comment Share on other sites More sharing options...
UsernameAlreadyTaken Posted July 9, 2014 Share Posted July 9, 2014 (edited) Pas de soucis.Tu peux essayer d'afficher $product.id_category_default quelque part ?Par exemple ici en remplaçant : <h3 class="name">{if isset($product.pack_quantity) && $product.pack_quantity}{$product.pack_quantity|intval|cat:' x '}{/if}<a href="{$product.link|escape:'htmlall':'UTF-8'}" title="{$product.name|escape:'htmlall':'UTF-8'}">{$product.name|truncate:35:'...'|escape:'htmlall':'UTF-8'}</a></h3> par <h3 class="name">{if isset($product.pack_quantity) && $product.pack_quantity}{$product.pack_quantity|intval|cat:' x '}{/if}<a href="{$product.link|escape:'htmlall':'UTF-8'}" title="{$product.name|escape:'htmlall':'UTF-8'}">{$product.id_category_default|escape:'htmlall':'UTF-8'}</a></h3> ça aura pour effect de remplacer le nom du produit par la valeur de $product.id_category_default Edited July 9, 2014 by UsernameAlreadyTaken (see edit history) Link to comment Share on other sites More sharing options...
maxi64000 Posted July 9, 2014 Author Share Posted July 9, 2014 ça affiche bien les id Link to comment Share on other sites More sharing options...
UsernameAlreadyTaken Posted July 9, 2014 Share Posted July 9, 2014 (edited) Dans ce cas c'est étrange que ça n'aie pas fonctionné avec le code que je t'avais donné, remplace tout ce qu'il y a dans ton fichier par ceci {if isset($products)} <!-- Products list --> <div id="product_list" class="clearfix"> {foreach from=$products item=product name=products} {if Configuration::get('productlistcols')>1&&($product@iteration%Configuration::get('productlistcols')==1)} {if ($product.id_category_default!=94)} <div class="clearfix product-block"> {/if} <div class="col-sm-{(12/Configuration::get('productlistcols'))} ajax_block_product {if ($product@iteration%Configuration::get('productlistcols')!=0 && $smarty.foreach.products.last)} border-style {/if}"> <div class="product-container"> <div class="image" style="position: relative;"> <a href="{$product.link|escape:'htmlall':'UTF-8'}" class="product_img_link" title="{$product.name|escape:'htmlall':'UTF-8'}"> {assign var='specific_prices' value=$product.specific_prices} {if $specific_prices.reduction_type == 'percentage' && ($specific_prices.from == $specific_prices.to OR ($smarty.now|date_format:'%Y-%m-%d %H:%M:%S' <= $specific_prices.to && $smarty.now|date_format:'%Y-%m-%d %H:%M:%S' >= $specific_prices.from))} <p id="reduction_percent" class="discountcss p_reduc_vignette"> <span id="reduction_percent_display" class="reduc_vignette"> -{$specific_prices.reduction*100|floatval}% </span> </p> {/if} <img class="img-responsive" src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'home_default')|escape:'html'}" alt="{if !empty($product.legend)}{$product.legend|escape:'htmlall':'UTF-8'}{else}{$product.name|escape:'htmlall':'UTF-8'}{/if}" title="{if !empty($product.legend)}{$product.legend|escape:'htmlall':'UTF-8'}{else}{$product.name|escape:'htmlall':'UTF-8'}{/if}" {if isset($homeSize)} width="{$homeSize.width}" height="{$homeSize.height}"{/if} /> {if isset($product.new) && $product.new == 1}<span class="new">{l s='New'}</span>{/if} </a> </div> <div class="product-meta"> <h3 class="name">{if isset($product.pack_quantity) && $product.pack_quantity}{$product.pack_quantity|intval|cat:' x '}{/if}<a href="{$product.link|escape:'htmlall':'UTF-8'}" title="{$product.name|escape:'htmlall':'UTF-8'}">{$product.name|truncate:35:'...'|escape:'htmlall':'UTF-8'}</a></h3> <div class="description">{$product.description_short|strip_tags:'UTF-8'|truncate:240:'...'}</div> {if (!$PS_CATALOG_MODE AND ((isset($product.show_price) && $product.show_price) || (isset($product.available_for_order) && $product.available_for_order)))} <div class="content_price"> {if isset($product.show_price) && $product.show_price && !isset($restricted_country_mode)}<span class="price">{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if} {if $priceDisplay == 1}{l s='tax excl.'}{else}{l s='tax incl.'}{/if}</span>{/if} <span class="price-discount price_reduc">{if $product.reduction}{convertPrice price=$product.price_without_reduction} HT{else}<br>{/if}</span> </div> <div id="location_3_ans"> {assign var="loc5ans" value=0} {math equation="(prixVente * 0.06) / 3" prixVente=$product.price_tax_exc assign=loc5ans} <span class="texte_loc">{l s='Location sur 5 ans : '}</span><span class="prix_loc">{convertPrice price=$loc5ans} {l s='HT/mois'}</span> </div> {if isset($product.available_for_order) && $product.available_for_order && !isset($restricted_country_mode)}<span class="availability">{if ($product.allow_oosp || $product.quantity > 0)}{l s='Available'}{elseif (isset($product.quantity_all_versions) && $product.quantity_all_versions > 0)}{l s='Product available with different options'}{else}<span class="warning_inline">{l s='Out of stock'}</span>{/if}</span>{/if} {if isset($product.online_only) && $product.online_only}<span class="online_only">{l s='Online only'}</span>{/if} {/if} {if isset($product.on_sale) && $product.on_sale && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE}<span class="on_sale">{l s='On sale!'}</span> {elseif isset($product.reduction) && $product.reduction && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE}{*<span class="discount">{l s='Reduced price!'}*}</span>{/if} </div> <div class="product_bottom"> {if ($product.id_product_attribute == 0 || (isset($add_prod_display) && ($add_prod_display == 1))) && $product.available_for_order && !isset($restricted_country_mode) && $product.minimal_quantity <= 1 && $product.customizable != 2 && !$PS_CATALOG_MODE} {if ($product.allow_oosp || $product.quantity > 0)} {if isset($static_token)} <a class="button ajax_add_to_cart_button exclusive" rel="ajax_id_product_{$product.id_product|intval}" href="{$link->getPageLink('cart',false, NULL, "add=1&id_product={$product.id_product|intval}&token={$static_token}", false)|escape:'html'}" title="{l s='Add to cart'}"><span></span>{l s='Add to cart'}</a> {else} <a class="button ajax_add_to_cart_button exclusive" rel="ajax_id_product_{$product.id_product|intval}" href="{$link->getPageLink('cart',false, NULL, "add=1&id_product={$product.id_product|intval}", false)|escape:'html'}" title="{l s='Add to cart'}"><span></span>{l s='Add to cart'}</a> {/if} {else} <span class="exclusive"><span></span>{l s='Add to cart'}</span> {/if} {/if} <a class="button lnk_view" href="{$product.link|escape:'htmlall':'UTF-8'}" title="{l s='View'}">{l s='View'}<span class="icon-play"></span></a> {if isset($comparator_max_item) && $comparator_max_item} <p class="compare"> <input type="checkbox" class="comparator" id="comparator_item_{$product.id_product}" value="comparator_item_{$product.id_product}" {if isset($compareProducts) && in_array($product.id_product, $compareProducts)}checked="checked"{/if} autocomplete="off"/> <label for="comparator_item_{$product.id_product}">{l s='Select to compare'}</label> </p> {/if} </div> </div> </div> {if Configuration::get('productlistcols')>1&&($product@iteration%Configuration::get('productlistcols')==0||$smarty.foreach.products.last)} </div> {/if} {/if} {/foreach} </div> <!-- /Products list --> {/if} c'est exactement le même code que celui d'origine avec une condition supplémentaire Edited July 9, 2014 by UsernameAlreadyTaken (see edit history) Link to comment Share on other sites More sharing options...
maxi64000 Posted July 9, 2014 Author Share Posted July 9, 2014 non toujours pas... de mon coté j'ai trouvé la solution! Dans le Manufacture.php Dans la function getProducts Juste après la ligne "$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql);" On ajoute : foreach($result as $key => $product) { $sql = Db::getInstance()->ExecuteS('SELECT id_category_default FROM ps_product WHERE id_product = '.$product["id_product"].''); if ($sql[0]["id_category_default"] == 94) { unset($result[$key]); } } mon problème est réglé mais celui de la pagination commence... :'( Link to comment Share on other sites More sharing options...
UsernameAlreadyTaken Posted July 9, 2014 Share Posted July 9, 2014 J'avais omis mes parenthèses ... autant pour moiLe problème en faisant ça c'est que tu récupères déjà tous tes produits suite à une requête et ensuite tu refais une requête pour chaque produit pour récupérer son id_category_defaultTu pourrais le faire directement dans la premiere requête avec une clause WHERE... mais comme je t'ai dit, dans ce cas tu n'auras JAMAIS les produits de cette catégorie et si tu veux les afficher un jour sur une seule page (ou plus) , tu ne pourras pas le récupérer. 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