Jump to content
Margaux M

Griser image produits rupture de stock

Recommended Posts

Bonjour,

Je suis à la recherche d'une solution pour griser les images dans la product_list des produits qui sont en rupture de stock. CF pièce jointe. J'ai essayé de "tricher" en modifiant mon étiquette indisponible, la faire grise et de la taille de l'image et changer l'opacité afin de "désaturer " les couleurs de la photo du produit, mais du coup je ne peux plus cliquer sur l'image pour accéder à la fiche produit! Votre aide est la bienvenue!

D'avance merci!

cc.png

Share this post


Link to post
Share on other sites

ajoutez une classe à l'image dans le tpl si le stock est <= 0 et en css ajoutez une règle img.nom_de_votre_classe {opacity: 0.8;}

Share this post


Link to post
Share on other sites

Merci de votre réponse! Je rencontre néanmoins un problème (de taille!) : dans le product_list.tpl j'ai rien qui indique l'image, je trouve l'img class intéressante dans un autre ficher, product-section-cs.tpl, en revanche je comprends pas bien comment le modifier. J'ai essayé ça

 

{if ($product.allow_oosp || $product.quantity > 0)}
<span class="{if $product.quantity <= 0 && !$product.allow_oosp}out-of-stock{else}available-now{/if}">
	<link itemprop="availability" href="http://schema.org/InStock" />
  {if $product.quantity <= 0}
                            {if $product.allow_oosp}
                             {if isset($product.available_later) && $product.available_later}{$product.available_later}
                             {else}
                            {/if}
                             {else}
                            {l s='Out of stock'}
                            {/if}
                             {else}
                            {if isset($product.available_now) && $product.available_now}{$product.available_now}
                             {else}
                            {/if}
                           {/if}
</span>
  {elseif (isset($product.quantity_all_versions) && $product.quantity_all_versions > 0)}{else}
<img class="outstock" src="{$link->getImageLink($product.link_rewrite, $product.id_image, $image_size)|escape:'html':'UTF-8'}" alt="{if !empty($product.legend)}{$product.legend|escape:'html':'UTF-8'}{else}{$product.name|escape:'html':'UTF-8'}{/if}" title="{if !empty($product.legend)}{$product.legend|escape:'html':'UTF-8'}{else}{$product.name|escape:'html':'UTF-8'}{/if}" {if isset($homeSize)} width="{$homeSize.width}" height="{$homeSize.height}" {/if} itemprop="image" />{if count($imageAll)>1} {foreach from=$imageAll item=imaget name=images} {if $imaget.cover!=1} {assign var=img_second_id value ="`$product.id_product`-`$imaget.id_image`"} {break} {/if} {/foreach}
<img class="img-hover" src="{$link->getImageLink($product.link_rewrite,$img_second_id, $image_size)}" alt="{$product.legend|escape:'htmlall':'UTF-8'}" />{/if}{/if}

En espérant que si stock <= 0 alors ça modifie l'img class de base en "outstock", mais il n'en est rien! J'ai du foirer quelque part!

 

Edit: Alors en fait, ça marche presque! J'ai deux fois l'image, dont une avec la bonne classe!

Edited by Margaux M (see edit history)

Share this post


Link to post
Share on other sites

bah c'est normal vous avez mis les 2 images dans le même bloc {else} donc votre code dit: c'est soit les 2 soit aucune

et le plus simple est de laisser une seule image et de mettre la condition dans le bloc image:

 

<img src="chemin_de_l_image" {if $product_quantity <= 0}class="outstock"{/if} alt="toto" title="tata" />

Share this post


Link to post
Share on other sites

Merci pour l'explication et la nouvelle ligne de code! J'avoue avoir un peu de mal encore!

 

			<img src="{$link->getImageLink($product.link_rewrite, $product.id_image, $image_size)|escape:'html':'UTF-8'}" class="replace-2x img-responsive" {if $product_quantity <= 0} class="outstock"{/if}  alt="{if !empty($product.legend)}{$product.legend|escape:'html':'UTF-8'}{else}{$product.name|escape:'html':'UTF-8'}{/if}" title="{if !empty($product.legend)}{$product.legend|escape:'html':'UTF-8'}{else}{$product.name|escape:'html':'UTF-8'}{/if}" {if isset($homeSize)} width="{$homeSize.width}" height="{$homeSize.height}"{/if} itemprop="image" /> 
				{if count($imageAll)>1}
				{foreach from=$imageAll item=imaget name=images}
					{if $imaget.cover!=1}
						{assign  var=img_second_id value ="`$product.id_product`-`$imaget.id_image`"}
						 {break}
					{/if}
				{/foreach}
				<img class="img-hover" src="{$link->getImageLink($product.link_rewrite,$img_second_id, $image_size)}" alt="{$product.legend|escape:'htmlall':'UTF-8'}" />
			{/if}

Quand je fais ça, ça ne change pas les produits en rupture de stock. J'ai essayé de mettre

{if $product_quantity <= 0}class="outstock"{/if}

  en premier, dans ce cas là toutes mes images sont grisées!

Share this post


Link to post
Share on other sites

Oui mais non, je vous ai donné un exemple, vous devez l'adapter à votre cas car vous avez déjà une classe par défaut:

class="replace-2x img-responsive"

Donc votre code devient:

class="replace-2x img-responsive{if $product_quantity <= 0} outstock{/if}" 

On met juste le nom de la classe en condition supplémentaire

Share this post


Link to post
Share on other sites

D'accord! Je suis désolée, il semblerait que la condition <= 0 ne soit pas prise en compte, maintenant j'ai les 3 classes dans mes img, avec la outstock qui prend le dessus (elles sont toute grisées)

Share this post


Link to post
Share on other sites

effectivement c'est :

$product.quantity

dans votre cas, mais si on est sur un produit avec déclinaisons, il faudra modifier également le js car £product.quantity concerne la quanté totale du produit (somme des quantités des déclinaisons)

Share this post


Link to post
Share on other sites

Effectivement, comme prévu ça marche mais ça affecte aussi les produits avec des déclinaisons!

Je dois regarder du côté de product.js?

Mille mercis pour l'aide!

Share this post


Link to post
Share on other sites

il faut faire la même chose en js au moment de la génération des images

Dans ce cas, dans le tpl il est préférable d'utiliser le paramètre global: 

{if (isset($product.quantity_all_versions) && $product.quantity_all_versions <= 0) || $product.quantity <= 0}

Ce qui ne grisera pas l'image principale si au moins une décli est en stock.

Dans le js, au moment du changement de combinaison il faut, lors de la vérification de la dispo (regardez la fonction qui modifie le texte du "En stock"), ajouter la classe à l'image de cette décli

Share this post


Link to post
Share on other sites

Bonjour! Est-il possible d'avoir un poil plus d'explication pour terminer la modification? Dans quel fichier .js je dois regarder? J'ai pas compris l'histoire de changement de combinaison et l'ajout de la classe à l'image de la déclinaison!

Merci et encore désolée d'avoir autant de difficultés!

Share this post


Link to post
Share on other sites

Ca ne va pas être simple si vous ne maitrisez pas le code...

Les déclinaisons sont toutes chargées dans un tableau javascript en front office.

Lors du clic sur les déclis, le code javascript adapte l'affichage (image, prix, stock, etc...) suivant les éléments contenus dans ce tableau. Il faut donc se greffer sur ce code pour, suivant le stock dispo, ajouter ou pas la classe qui grise l'image.

 

Cela se passe dans le fichier product.js de votre thème.

Dans la fonction fonction findCombination() qui récupère les propriétés de la combinaison en cours, vous trouverez l'appel à displayImage().

 

Share this post


Link to post
Share on other sites

On est d'accord que c'est bien pour griser l'image uniquement sur la page product list?

Concernant l'appel en question, j'imagine que c'est celui là

// search the combinations' case of attributes and update displaying of availability, prices, ecotax, and image
function findCombination()
			//show the large image in relation to the selected combination
			if (combinations[combination]['image'] && combinations[combination]['image'] != -1)
				displayImage($('#thumb_' + combinations[combination]['image']).parent());

 

Share this post


Link to post
Share on other sites

Ah ben non je parlais de la page produit (product.tpl)

Pour la page product-list.tpl (catégories, home etc...) c'est différent car les images de déclinaisons ne sont pas affichées, mais uniquement l'image de couverture

Share this post


Link to post
Share on other sites

Ah voilà! Je ne souhaite pas griser les images dans la page produit, j'y vois pas spécialement d'intérêt, alors que sur la product list ça permet d'un coup d'oeil de voir qu'un produit est en rupture. Mais du coup, ce que vous disiez concernant le fait que si une déclinaison est à 0 l'image serait grisée est vrai, du coup je dois modifier quoi pour que l'image ne se grise pas lors qu'au moins une déclinaison est en stock?

J'ai essayé de voir si il était possible de récupérer le code existant pour l'étiquette "out of stock", qui elle marche bien, mais j'ai pas noté de différence par rapport au code global que vous m'aviez indiqué...

En tout cas merci encore de votre patience!

Share this post


Link to post
Share on other sites

Bah je vous ai déjà donné ce code...

class="replace-2x img-responsive{if (isset($product.quantity_all_versions) && $product.quantity_all_versions <= 0) || $product.quantity <= 0} outstock{/if}"

Share this post


Link to post
Share on other sites

Oui, et ça marche impeccable tant qu'il n'y a pas de déclinaisons. En présence de déclinaisons, si l'une d'elle est à 0, l'image est grisée, au lieu de rester en couleur et passer en gris lorsque toutes les déclinaisons sont à 0. Je colle le code si jamais c'est un problème là dedans

 

			<img src="{$link->getImageLink($product.link_rewrite, $product.id_image, $image_size)|escape:'html':'UTF-8'}" class="replace-2x img-responsive{if (isset($product.quantity_all_versions) && $product.quantity_all_versions <= 0) || $product.quantity <= 0} outstock{/if}" alt="{if !empty($product.legend)}{$product.legend|escape:'html':'UTF-8'}{else}{$product.name|escape:'html':'UTF-8'}{/if}" title="{if !empty($product.legend)}{$product.legend|escape:'html':'UTF-8'}{else}{$product.name|escape:'html':'UTF-8'}{/if}" {if isset($homeSize)} width="{$homeSize.width}" height="{$homeSize.height}"{/if} itemprop="image" /> 
				{if count($imageAll)>1}
				{foreach from=$imageAll item=imaget name=images}
					{if $imaget.cover!=1}
						{assign  var=img_second_id value ="`$product.id_product`-`$imaget.id_image`"}
						 {break}
					{/if}
				{/foreach}
				<img class="img-hover" src="{$link->getImageLink($product.link_rewrite,$img_second_id, $image_size)}" alt="{$product.legend|escape:'htmlall':'UTF-8'}" />
			{/if}

 

Share this post


Link to post
Share on other sites

ok alors remplacez le début par ça:

class="replace-2x img-responsive{if (isset($product.quantity_all_versions) && $product.quantity_all_versions <= 0)} outstock{else}{if $product.quantity <= 0} outstock{/if}{/if}" 
Edited by Eolia (see edit history)

Share this post


Link to post
Share on other sites

Merci, j'ai remplacé mais j'ai une erreur lorsque je rafraîchis la page!

Quote

Fatal error: Uncaught --> Smarty Compiler: Syntax error in template "/home/yellowflhd/www/themes/ps_appliance/product-section-cs.tpl" on line 41 "<img src="{$link->getImageLink($product.link_rewrite, $product.id_image, $image_size)|escape:'html':'UTF-8'}" class="replace-2x img-responsive{if (isset($product.quantity_all_versions) && $product.quantity_all_versions <= 0) outstock {else}{if $product.quantity <= 0} outstock{/if}{/if}" alt="{if !empty($product.legend)}{$product.legend|escape:'html':'UTF-8'}{else}{$product.name|escape:'html':'UTF-8'}{/if}" title="{if !empty($product.legend)}{$product.legend|escape:'html':'UTF-8'}{else}{$product.name|escape:'html':'UTF-8'}{/if}" {if isset($homeSize)} width="{$homeSize.width}" height="{$homeSize.height}"{/if} itemprop="image" />" unexpected closing tag <-- thrown in /home/yellowflhd/www/tools/smarty/sysplugins/smarty_internal_templatecompilerbase.php on line 41

 

Share this post


Link to post
Share on other sites

oui il manque une accolade fermante ici

 <= 0)} outstock

Share this post


Link to post
Share on other sites

En effet! Par contre, l'image est toujours grisée même si des déclinaisons sont encore en stock :blink:

Share this post


Link to post
Share on other sites

Vous êtes sous quelle version Prestashop ?

Share this post


Link to post
Share on other sites

Bah vous devez avoir un override ou autre chose qui fiche le bazar car ces variables sont ok sous Presta 1.6 normalement

 

Share this post


Link to post
Share on other sites

Si il y a un override c'est dans le même fichier? Je le colle ici si jamais c'est le cas

 

{*
* 2007-2014 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author PrestaShop SA <contact@prestashop.com>
*  @copyright  2007-2014 PrestaShop SA
*  @license    http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
*  International Registered Trademark & Property of PrestaShop SA
*}
{if !isset($image_size)}
	{assign var=image_size value='home_default'}
{/if}
<section class="cs-product" itemscope itemtype="http://schema.org/Product">
	<div class="cs-left-product">
		{$imageAll=Image::getImages(Context::getContext()->language->id,$product.id_product)}
		<a class="product_img_link{if count($imageAll)<=1} only-image{/if}"	href="{$product.link|escape:'html':'UTF-8'}" title="{$product.name|escape:'html':'UTF-8'}" itemprop="url">

			<img src="{$link->getImageLink($product.link_rewrite, $product.id_image, $image_size)|escape:'html':'UTF-8'}" class="replace-2x img-responsive{if (isset($product.quantity_all_versions) && $product.quantity_all_versions <= 0)} outstock{else}{if $product.quantity <= 0} outstock{/if}{/if}"  alt="{if !empty($product.legend)}{$product.legend|escape:'html':'UTF-8'}{else}{$product.name|escape:'html':'UTF-8'}{/if}" title="{if !empty($product.legend)}{$product.legend|escape:'html':'UTF-8'}{else}{$product.name|escape:'html':'UTF-8'}{/if}" {if isset($homeSize)} width="{$homeSize.width}" height="{$homeSize.height}"{/if} itemprop="image" /> 
				{if count($imageAll)>1}
				{foreach from=$imageAll item=imaget name=images}
					{if $imaget.cover!=1}
						{assign  var=img_second_id value ="`$product.id_product`-`$imaget.id_image`"}
						 {break}
					{/if}
				{/foreach}
				<img class="img-hover" src="{$link->getImageLink($product.link_rewrite,$img_second_id, $image_size)}" alt="{$product.legend|escape:'htmlall':'UTF-8'}" />
			{/if}
			
		</a>
		<div class="new-sale-box">
		{if isset($product.new) && $product.new == 1}
			<a class="new-box" href="{$product.link|escape:'html':'UTF-8'}">
				<span class="new-label">{l s='New'}</span>
			</a>
		{/if}
		{if isset($product.on_sale) && $product.on_sale && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE}
			<a class="sale-box" href="{$product.link|escape:'html':'UTF-8'}">
				<span class="sale-label">{l s='Sale!'}</span>
			</a>
		{/if}
		</div>
		<div class="button-container">
			{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 btn btn-default" href="{$link->getPageLink('cart',false, NULL, "add=1&amp;id_product={$product.id_product|intval}&amp;token={$static_token}", false)|escape:'html':'UTF-8'}" rel="nofollow" title="{l s='Add to cart'}" data-id-product="{$product.id_product|intval}">
							<span>{l s='Add to cart'}</span>
						</a>
					{else}
						<a class="button ajax_add_to_cart_button btn btn-default" href="{$link->getPageLink('cart',false, NULL, 'add=1&amp;id_product={$product.id_product|intval}', false)|escape:'html':'UTF-8'}" rel="nofollow" title="{l s='Add to cart'}" data-id-product="{$product.id_product|intval}">
							<span>{l s='Add to cart'}</span>
						</a>
					{/if}
				{else}
					<span class="button ajax_add_to_cart_button btn btn-default disabled">
						<span>{l s='Out of stock'}</span>
					</span>
				{/if}
			{/if}
			<a itemprop="url" class="button lnk_view btn btn-default" href="{$product.link|escape:'html':'UTF-8'}" title="{l s='View'}">
				<span>{l s='More'}</span>
			</a>
			<div class="functional-buttons clearfix">
				{hook h='displayProductListFunctionalButtons' product=$product}
				{if isset($comparator_max_item) && $comparator_max_item}
					<div class="compare">
						<a data-toggle="tooltip" data-placement="top" data-original-title="{l s='Add to Compare'}" class="add_to_compare" href="{$product.link|escape:'html':'UTF-8'}" data-id-product="{$product.id_product}">{l s='Add to Compare'}</a>
					</div>
				{/if}
				
				{if isset($quick_view) && $quick_view}
					<div class="quick-view-wrapper-mobile">
					<a class="quick-view-mobile" href="{$product.link|escape:'html':'UTF-8'}" rel="{$product.link|escape:'html':'UTF-8'}">
						<i class="icon-eye-open"></i>
					</a>
				</div>
				<a data-toggle="tooltip" data-placement="top" data-original-title="{l s='Quick view'}" class="quick-view" href="{$product.link|escape:'html':'UTF-8'}" rel="{$product.link|escape:'html':'UTF-8'}">
					<span>{l s='Quick view'}</span>
				</a>
				{/if}
			</div>
		</div>
	</div>
	<div class="cs-right-product">
		{if isset($product.category_default)}<h6 class="category-name">{$product.category_default|truncate:30:'...'|escape:'html':'UTF-8'}</h6>{/if}
		<h5 itemprop="manufacturer">
			{if isset($product.pack_quantity) && $product.pack_quantity}{$product.pack_quantity|intval|cat:' x '}{/if}
			<!--Product list catalogue Manufacturer-->
			<a class="product-manufacturer" href="{$product.link|escape:'html':'UTF-8'}" title="{$product.manufacturer_name|escape:'html':'UTF-8'}" >
				{$product.manufacturer_name|escape:'html':'UTF-8'}
			</a>
		</h5>

		<p class="product-name" itemprop="name">
		<!--Product list catalogue Product name-->
			<a class="product-name" href="{$product.link|escape:'html':'UTF-8'}" title="{$product.name|escape:'html':'UTF-8'}" >
			{$product.name|truncate:70:'...'|escape:'html':'UTF-8'}
		</p>
		
		
		{if $page_name != 'product'}
			{hook h='displayProductListReviews' product=$product}
		{/if}
		<p class="product-desc" itemprop="description">
			{$product.description_short|strip_tags:'UTF-8'|truncate:360:'...'}
		</p>
		
		{if (!$PS_CATALOG_MODE AND ((isset($product.show_price) && $product.show_price) || (isset($product.available_for_order) && $product.available_for_order)))}
		<div itemprop="offers" itemscope itemtype="http://schema.org/Offer" class="content_price">
			{if isset($product.show_price) && $product.show_price && !isset($restricted_country_mode)}
				<span itemprop="price" class="price product-price">
					{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}
				</span>
				<meta itemprop="priceCurrency" content="{$currency->iso_code}" />
				{if isset($product.specific_prices) && $product.specific_prices && isset($product.specific_prices.reduction) && $product.specific_prices.reduction > 0}
					{hook h="displayProductPriceBlock" product=$product type="old_price"}
					<span class="old-price product-price">
						{displayWtPrice p=$product.price_without_reduction}
					</span>
					{hook h="displayProductPriceBlock" id_product=$product.id_product type="old_price"}
					{if $product.specific_prices.reduction_type == 'percentage'}
						<span class="price-percent-reduction">-{$product.specific_prices.reduction * 100}%</span>
					{/if}
				{/if}
				{hook h="displayProductPriceBlock" product=$product type="price"}
				{hook h="displayProductPriceBlock" product=$product type="unit_price"}
			{/if}
		</div>
		{/if}
		
		<div class="button-container">
			{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 data-toggle="tooltip" data-placement="top" data-original-title="{l s='Add to cart'}"  class="button ajax_add_to_cart_button btn btn-default" href="{$link->getPageLink('cart',false, NULL, "add=1&amp;id_product={$product.id_product|intval}&amp;token={$static_token}", false)|escape:'html':'UTF-8'}" rel="nofollow" title="{l s='Add to cart'}" data-id-product="{$product.id_product|intval}">
							<span>{l s='Add to cart'}</span>
						</a>
					{else}
						<a data-toggle="tooltip" data-placement="top" data-original-title="{l s='Add to cart'}" class="button ajax_add_to_cart_button btn btn-default" href="{$link->getPageLink('cart',false, NULL, 'add=1&amp;id_product={$product.id_product|intval}', false)|escape:'html':'UTF-8'}" rel="nofollow" title="{l s='Add to cart'}" data-id-product="{$product.id_product|intval}">
							<span>{l s='Add to cart'}</span>
						</a>
					{/if}
				{else}
					<a data-toggle="tooltip" data-placement="top" data-original-title="{l s='Out of stock'}">
					<span class="button ajax_add_to_cart_button btn btn-default disabled">
						<span>{l s='Out of stock'}</span>
					</span>
					</a>
				{/if}
			{/if}
			<a itemprop="url" class="button lnk_view btn btn-default" href="{$product.link|escape:'html':'UTF-8'}" title="{l s='View'}">
				<span>{l s='More'}</span>
			</a>
			<div class="functional-buttons clearfix">
				{hook h='displayProductListFunctionalButtons' product=$product}
				{if isset($comparator_max_item) && $comparator_max_item}
					<div class="compare">
						<a data-toggle="tooltip" data-placement="top" data-original-title="{l s='Add to Compare'}" class="add_to_compare" href="{$product.link|escape:'html':'UTF-8'}" data-id-product="{$product.id_product}">{l s='Add to Compare'}</a>
					</div>
				{/if}
				
				{if isset($quick_view) && $quick_view}
					<div class="quick-view-wrapper-mobile">
					<a class="quick-view-mobile" href="{$product.link|escape:'html':'UTF-8'}" rel="{$product.link|escape:'html':'UTF-8'}">
						<i class="icon-eye-open"></i>
					</a>
				</div>
				<a data-toggle="tooltip" data-placement="top" data-original-title="{l s='Quick view'}" class="quick-view" href="{$product.link|escape:'html':'UTF-8'}" rel="{$product.link|escape:'html':'UTF-8'}">
					<span>{l s='Quick view'}</span>
				</a>
				{/if}
			</div>
		</div>
		
		{if isset($product.color_list)}
			<div class="color-list-container">{$product.color_list}</div>
		{/if}
		<div class="product-flags">
			{if (!$PS_CATALOG_MODE AND ((isset($product.show_price) && $product.show_price) || (isset($product.available_for_order) && $product.available_for_order)))}
				{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}
				{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>
		{if (!$PS_CATALOG_MODE && $PS_STOCK_MANAGEMENT && ((isset($product.show_price) && $product.show_price) || (isset($product.available_for_order) && $product.available_for_order)))}
			{if isset($product.available_for_order) && $product.available_for_order && !isset($restricted_country_mode)}
				<span itemprop="offers" itemscope itemtype="http://schema.org/Offer" class="availability">
					{if ($product.allow_oosp || $product.quantity > 0)}
						<span class="{if $product.quantity <= 0 && !$product.allow_oosp}out-of-stock{else}available-now{/if}">
							<link itemprop="availability" href="http://schema.org/InStock" />{if $product.quantity <= 0}{if $product.allow_oosp}{if isset($product.available_later) && $product.available_later}{$product.available_later}{else}{l s='In Stock'}{/if}{else}{l s='Out of stock'}{/if}{else}{if isset($product.available_now) && $product.available_now}{$product.available_now}{else}{l s='In Stock'}{/if}{/if}
						</span>
					{elseif (isset($product.quantity_all_versions) && $product.quantity_all_versions > 0)}
						<span class="available-dif">
							<link itemprop="availability" href="http://schema.org/LimitedAvailability" />{l s='Product available with different options'}
						</span>
					{else}
						<span class="out-of-stock">
							<link itemprop="availability" href="http://schema.org/OutOfStock" />{l s='Out of stock'}
						</span>
					{/if}
				</span>
			{/if}
		{/if}
		{if isset($cs_id)}
			{assign var=temp value=$cs_id}
		{else}
			{assign var=temp value='product_list'}
		{/if}
		{if !isset($count_down)}
			{hook h='displayCountDownProduct' product=$product index1='block' index2=$temp}
		{/if}
	</div>
</section>

 

Share this post


Link to post
Share on other sites

Non, un override éventuel de product.php ou ProductController.php dans le répertoire /overrides

Share this post


Link to post
Share on other sites

J'ai bien un fichier ProductController.php dans /override/controllers/front/ et Product.php dans /override/classes/

J'ai essayé de les renommer en .phpold ainsi que class_index.php dans /cache/ mais sans succès, c'est à s'arracher les cheveux!

Share this post


Link to post
Share on other sites

ces 2 variables doivent retourner la quantité totale du produit avec ses déclis. Si votre image est grisée c'est que le chiffre des quantités est erroné...

essayez d'afficher juste leur contenu en ajoutant dans le tpl cette ligne:

Quantité totale déclis = {$product.quantity_all_versions} Quantités produit = {$product.quantity}

 

Et dites-moi ce qui s'affiche

Share this post


Link to post
Share on other sites

Apparemment les overrides ont été créé par ce module "groupinc" (Module Augmentation/Baisse de prix par groupe, catégorie...), que je n'utilise plus, donc je l'ai supprimé... La date des fichiers overrides a bien changé, j'ai supprimé le class_index.php, mais toujours pas mieux!

Share this post


Link to post
Share on other sites
3 minutes ago, Eolia said:

ces 2 variables doivent retourner la quantité totale du produit avec ses déclis. Si votre image est grisée c'est que le chiffre des quantités est erroné...

essayez d'afficher juste leur contenu en ajoutant dans le tpl cette ligne:

Quantité totale déclis = {$product.quantity_all_versions} Quantités produit = {$product.quantity}

 

Et dites-moi ce qui s'affiche

 

Pour un produit OK (stock 0 sur toutes les déclinaisons) :

 

Quantité totale déclis = 0 Quantités produit = 0

Pour un produit grisé malgré le fait que des déclinaisons soient en stock :

Quantité totale déclis = 5 Quantités produit = 0

Share this post


Link to post
Share on other sites

Je viens de remarquer quelque chose et j'ai fait un essai, si ça peut donner une piste.

Lorsque la déclinaison par défaut est à 0, l'image est grisée même si d'autre déclinaisons sont en stock. Si je change la déclinaison par défaut par une déclinaison avec du stock, l'affichage est correcte!

Edited by Margaux M (see edit history)

Share this post


Link to post
Share on other sites

Ok...

Dernière chance^^

class="replace-2x img-responsive{if isset($product.quantity_all_versions)}{if $product.quantity_all_versions <= 0} outstock{/if}{else}{if $product.quantity <= 0} outstock{/if}{/if}" 
  • Thanks 1

Share this post


Link to post
Share on other sites

Bonjour,

 

Je souhaite faire la même chose pour mon site, je suis actuellement sur prestashop 1.7.6.1. Pensez-vous que je puisse faire les même manipulations afin d'obtenir le résultat?

 

Merci par avance.

Share this post


Link to post
Share on other sites

Bonsoir,

Oui, la logique est toujours la même.
Vous créer une classe CSS pour baisser l'opacité et vous passez cette classe à votre balise img dépendant de si vous avez du stock ou non.

Bonne soirée,
Marvin

  • Thanks 1

Share this post


Link to post
Share on other sites
On 11/5/2019 at 5:00 PM, Mathieu J said:

Bonjour,

 

Je souhaite faire la même chose pour mon site, je suis actuellement sur prestashop 1.7.6.1. Pensez-vous que je puisse faire les même manipulations afin d'obtenir le résultat?

 

Merci par avance.

Bonjour,

Je cherche aussi à réaliser la même chose sur 1.7

Avez-vous trouvé une solution ?

Merci d'avance et bonne journée

Share this post


Link to post
Share on other sites
il y a 33 minutes, limitedshop a dit :

Je cherche aussi à réaliser la même chose sur 1.7

Avez-vous trouvé une solution ?

 

Le 05/11/2019 à 10:36 PM, Marvin Lamart a dit :

Oui, la logique est toujours la même.
Vous créer une classe CSS pour baisser l'opacité et vous passez cette classe à votre balise img dépendant de si vous avez du stock ou non.

 

Share this post


Link to post
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...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More