Jump to content

Supprimer l'affichage du prix si prix du produit est égal à 0


Recommended Posts

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

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

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

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

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

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

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

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

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

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
×
×
  • Create New...