Grandloup Posted February 15, 2014 Share Posted February 15, 2014 Bonjour, Sur la 1.5.6.2, je dois "vendre" des bons de réduction, pour des spectacles et autres, sous forme de produits téléchargeables gratuit (donc prix = 0), et d'autres produits non virtuels avec des prix "normaux". J'ai besoin de supprimer l'affichage à 0 du prix de ces produits virtuels (partout où ce prix apparait, si possible, dans le pire des cas au moins dans la fiche produit). En effet sur l'image du Bon de réduction ainsi que dans le résumé de la description j'annonce le tarif normal et son prix réduit (ex : 59 € => 45 €), afficher en dessous prix : 0,00 € est du plus mauvais effet sur les clients... Une âme charitable saurait me dire comment faire pour apporter cette fonctionnalité ? Merci d'avance Link to comment Share on other sites More sharing options...
Mediacom87 Posted February 15, 2014 Share Posted February 15, 2014 Bonjour, cherchez un peux car cela est déjà solutionné dans le forum, peut être pas exactement pour votre version mais cela doit être super proche. Link to comment Share on other sites More sharing options...
Grandloup Posted February 15, 2014 Author Share Posted February 15, 2014 Merci pour la réponse... J'ai cherché...j'ai trouvé pour la 1.3, mais rien pour la 1.5 La solution de la 1.3 ne fonctionne pas pour la 1.5 (page blanche), et mes connaissances sont trop limitées pour tenter le diable.... ça se trouve dans le product.tpl entre autre, mais comment ? Link to comment Share on other sites More sharing options...
Mediacom87 Posted February 15, 2014 Share Posted February 15, 2014 Salut, ce n'est pas expliqué pour la 1.5 ar c'est évidant : voici le code d'affichage du prix <p class="our_price_display"> {if $priceDisplay >= 0 && $priceDisplay <= 2} <span id="our_price_display">{convertPrice price=$productPrice}</span> <!--{if $tax_enabled && ((isset($display_tax_label) && $display_tax_label == 1) OR !isset($display_tax_label))} {if $priceDisplay == 1}{l s='tax excl.'}{else}{l s='tax incl.'}{/if} {/if}--> {/if} </p> à mon avis en modifiant le $priceDisplay >= 0 en $priceDisplay > 0 le prix ne devrait plus s'afficher. je vous laisse chercher dans product-list et dans les autres modules affichant le prix. Link to comment Share on other sites More sharing options...
Grandloup Posted February 15, 2014 Author Share Posted February 15, 2014 Merci de votre réactivité à une heure tardive ! C'est très sympa ! J'essaye ça dans tous les modules etc... Link to comment Share on other sites More sharing options...
Grandloup Posted February 16, 2014 Author Share Posted February 16, 2014 Bonjour Mediacom, Comme disait le grand Charles...Hélas, hélas, hélas ! Ben, ça ne fonctionne pas...Plus aucun prix ne s'affiche !(je ne l'ai fait que dans le product.tpl) " en modifiant le $priceDisplay >= 0 en $priceDisplay > 0 ", En lisant tous les posts parlant de ce soucis, j'avais cru comprendre que ce n'était pas si simple... Là je ne sais plus quoi faire.... Link to comment Share on other sites More sharing options...
Mediacom87 Posted February 16, 2014 Share Posted February 16, 2014 Pff en même temps si vous raconte des bêtises.il ne faut pas toucher à cela.modifiez la ligne comme cela : {if $priceDisplay >= 0 && $priceDisplay <= 2 && $productPrice != 0} Link to comment Share on other sites More sharing options...
Grandloup Posted February 16, 2014 Author Share Posted February 16, 2014 Et voilà ! Mediacom87, Le miracle a eu lieu, ça marche sur le product.tpl ! Merci 1000 fois ! Une aide précieuse, et le dimanche ! C'est la première fois que je vois cette modif sur le forum. Et par la même occasion, je découvre Prestatoolbox Que du bonheur ! Link to comment Share on other sites More sharing options...
Grandloup Posted February 18, 2014 Author Share Posted February 18, 2014 Bon.... Après des heures de recherche, impossible de trouver ailleurs que dans le product.tpl le code d'affichage du prix pour le modifier: {if $priceDisplay >= 0 && $priceDisplay <= 2} En résumant, avec la modif ça fonctionne très bien sur la page produit, mais pas bien sûr sur les pages catégories, ou produits phares, nouveaux etc... En faisant une recherche de masse (avec Dream), je n'ai trouvé cette ligne que dans le product.tpl (et dans les dossiers mobiles que je n'utilise pas) La seule chose que je trouve d'approchant, c'est dans classes\Product.php, ligne 2697 : // convert only if the specific price is in the default currency (id_currency = 0) if (!$specific_price || !($specific_price['price'] >= 0 && $specific_price['id_currency'])) $price = Tools::convertPrice($price, $id_currency); Et voilà le code plus complet en rapport avec les prix : // fetch price & attribute price $cache_id_2 = $id_product.'-'.$id_shop; if (!isset(self::$_pricesLevel2[$cache_id_2])) { $sql = new DbQuery(); $sql->select('product_shop.`price`, product_shop.`ecotax`'); $sql->from('product', 'p'); $sql->innerJoin('product_shop', 'product_shop', '(product_shop.id_product=p.id_product AND product_shop.id_shop = '.(int)$id_shop.')'); $sql->where('p.`id_product` = '.(int)$id_product); if (Combination::isFeatureActive()) { $sql->select('product_attribute_shop.id_product_attribute, product_attribute_shop.`price` AS attribute_price, product_attribute_shop.default_on'); $sql->leftJoin('product_attribute', 'pa', 'pa.`id_product` = p.`id_product`'); $sql->leftJoin('product_attribute_shop', 'product_attribute_shop', '(product_attribute_shop.id_product_attribute = pa.id_product_attribute AND product_attribute_shop.id_shop = '.(int)$id_shop.')'); } else $sql->select('0 as id_product_attribute'); $res = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); foreach ($res as $row) { $array_tmp = array( 'price' => $row['price'], 'ecotax' => $row['ecotax'], 'attribute_price' => (isset($row['attribute_price']) ? $row['attribute_price'] : null) ); self::$_pricesLevel2[$cache_id_2][(int)$row['id_product_attribute']] = $array_tmp; if (isset($row['default_on']) && $row['default_on'] == 1) self::$_pricesLevel2[$cache_id_2][0] = $array_tmp; } } if (!isset(self::$_pricesLevel2[$cache_id_2][(int)$id_product_attribute])) return; $result = self::$_pricesLevel2[$cache_id_2][(int)$id_product_attribute]; if (!$specific_price || $specific_price['price'] < 0) $price = (float)$result['price']; else $price = (float)$specific_price['price']; // convert only if the specific price is in the default currency (id_currency = 0) if (!$specific_price || !($specific_price['price'] >= 0 && $specific_price['id_currency'])) $price = Tools::convertPrice($price, $id_currency); // Attribute price if (is_array($result) && (!$specific_price || !$specific_price['id_product_attribute'] || $specific_price['price'] < 0)) { $attribute_price = Tools::convertPrice($result['attribute_price'] !== null ? (float)$result['attribute_price'] : 0, $id_currency); // If you want the default combination, please use NULL value instead if ($id_product_attribute !== false) $price += $attribute_price; } Bref, je crois que je vais avoir besoin d'aide....... Link to comment Share on other sites More sharing options...
Mediacom87 Posted February 18, 2014 Share Posted February 18, 2014 Là vous cherchez juste à retrouver la même chose ces qui n'est pas possible puisque vous n'êtes pas sur les même pages. mais juste en lisant le code on peut appliquer cette limitation. par exemple sur la page product-list.tpl on a : {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" style="display: inline;">{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span><br />{/if} {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} </div> {if isset($product.online_only) && $product.online_only}<span class="online_only">{l s='Online only'}</span>{/if} {/if} il suffit donc de rajouter la fonction de test du prix. $product.price > 0 ou $product.price != 0 Link to comment Share on other sites More sharing options...
Grandloup Posted February 18, 2014 Author Share Posted February 18, 2014 Merci encore, mais mes connaissances actuelles ne me permettent pas de savoir où placer ce code pour ajouter cette fonction... Il est vrai que c'est un métier, et que je devrais passer du temps sur le site du zero... Link to comment Share on other sites More sharing options...
Grandloup Posted February 18, 2014 Author Share Posted February 18, 2014 D'autant que le product-list.tpl de mon theme est très différent de celui du theme par défaut : {if isset($products)} <script type="text/javascript"> jQuery(document).ready(function () { $(".compare-selector").click(function(){ var checkbox = $(this).siblings("input[type=checkbox].comparator"); checkbox.attr("checked", !checkbox.attr("checked")); checkbox.trigger('click'); checkbox.attr("checked", !checkbox.attr("checked")); return false; }); }); </script> {if $cookie->vmode == ''} {assign var=vmode value=$tony_cfg.product_view_mode} {else} {assign var=vmode value=$cookie->vmode} {/if} {if $tony_cfg.products_img_hover_mode == ''} {assign var=products_img_hover_mode value=$cookie->products_img_hover_mode} {else} {assign var=products_img_hover_mode value=$tony_cfg.products_img_hover_mode} {/if} {if $cookie->products_img_normal != ''} {assign var=products_img_normal value=$cookie->products_img_normal} {else} {assign var=products_img_normal value=$tony_cfg.products_img_normal} {/if} {if $cookie->products_img_big != ''} {assign var=products_img_big value=$cookie->products_img_big} {else} {assign var=products_img_big value=$tony_cfg.products_img_big} {/if} {if $cookie->products_img_dimensions != ''} {assign var=products_img_dimensions value=$cookie->products_img_dimensions} {else} {assign var=products_img_dimensions value=$tony_cfg.products_img_dimensions} {/if} {if $cookie->products_show_mode != ''} {assign var=products_show_mode value=$cookie->products_show_mode} {else} {assign var=products_show_mode value=$tony_cfg.products_show_mode} {/if} <!-- Products list --> {if $vmode == 'grid'} {if $products_img_hover_mode == 'simple'} {include file="$tpl_dir./product-list-grid_hover2.tpl" products=$products products_img_normal=$products_img_normal products_img_big=$products_img_big products_img_dimensions=$products_img_dimensions products_show_mode=$products_show_mode} {else} {include file="$tpl_dir./product-list-grid.tpl" products=$products products_img_normal=$products_img_normal products_img_big=$products_img_big products_img_dimensions=$products_img_dimensions products_show_mode=$products_show_mode} {/if} {else} {if $products_img_hover_mode == 'simple'} {include file="$tpl_dir./product-list-list_hover2.tpl" products=$products products_img_normal=$products_img_normal products_img_big=$products_img_big products_img_dimensions=$products_img_dimensions products_show_mode=$products_show_mode} {else} {include file="$tpl_dir./product-list-list.tpl" products=$products products_img_normal=$products_img_normal products_img_big=$products_img_big products_img_dimensions=$products_img_dimensions products_show_mode=$products_show_mode} {/if} {/if} <!-- /Products list --> {/if} On se sent très seul parfois.....devant tant d'abîmes ! Link to comment Share on other sites More sharing options...
Mediacom87 Posted February 18, 2014 Share Posted February 18, 2014 regardez alors du côté des fichiers appelé comme product-list-list.tpl ou product-list-list_hover2.tpl Link to comment Share on other sites More sharing options...
Grandloup Posted February 19, 2014 Author Share Posted February 19, 2014 J'ai bien trouvé les 2 tpl correspondant à mon theme Je pense avoir mis la main sur l'endroit du code où il faut agir pour ajouter la fonction de test du prix, entourée des délimiteurs smarty ça doit donner quelque chose comme ça : {$product.price > 0 ou $product.price != 0} Mais où placer cette fonction...là je sèche Ci-dessous les 2 extraits de code correspondant à product-list-list.tpl et product-list-list_hover2.tpl : <div class="product-price"> {if (!$PS_CATALOG_MODE AND ((isset($product.show_price) && $product.show_price) || (isset($product.available_for_order) && $product.available_for_order)))} {if isset($product.reduction) && $product.reduction && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE} <span class="new">{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span><span class="old">{if !$priceDisplay}{convertPrice price=$product.price_without_reduction}{else}{convertPrice price=$product.price_without_reduction}{/if}</span> {elseif isset($product.show_price) && $product.show_price && !isset($restricted_country_mode)}<span class="price" style="display: inline;">{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span>{/if} {/if} </div> {include file="$tpl_dir./product-label-discount.tpl" product=$product} {include file="$tpl_dir./product-quick-view.tpl" product=$product title={l s='Quick View'} imgrel="ajax_id_product_{$product.id_product|intval}" } <div class="bottom-line"> <div class="price-box" itemprop="offers" itemscope itemtype="http://schema.org/Offer"> <meta itemprop="priceCurrency" content="{$currency->iso_code}" /> <meta itemprop="name" content="{$product.name}" /> {if (!$PS_CATALOG_MODE AND ((isset($product.show_price) && $product.show_price) || (isset($product.available_for_order) && $product.available_for_order)))} {if isset($product.reduction) && $product.reduction && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE} <span class="old-price"> <span class="price">{if !$priceDisplay}{convertPrice price=$product.price_without_reduction}{else}{convertPrice price=$product.price_without_reduction}{/if}</span> </span> <span class="special-price"> <span class="price" itemprop="price">{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span> </span> {elseif isset($product.show_price) && $product.show_price && !isset($restricted_country_mode)}<span class="price" style="display: inline;" itemprop="price">{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span>{/if} <br> {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}{l s='Out of stock'}{/if}</span>{/if} {if isset($product.online_only) && $product.online_only}<span class="online_only">{l s='Online only'}</span>{/if} {/if} </div> Si ce n'est pas trop demandé à mon sauveur Mediacom de me venir en aide une fois de plus...j'en serai ravi bien sûr ! 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