Jump to content

Page produit : pas d'alerte hors stock pour les déclinaisons


Recommended Posts

Bonjour,

J'utilise un thème payant "autumn" mais il n'y a plus de support pour ce thème depuis quelques temps.

Je rencontre un problème d'affichage sur mes fiches produits avec des déclinaisons : 
Quand je sélectionne une combinaison de déclinaisons qui n'a pas de stock, il n'y a pas de message "Ce produit n'existe pas dans cette déclinaison. Vous pouvez néanmoins en sélectionner une autre." qui s'affiche. On a seulement le bouton "ajouter au panier" qui disparaît.
Par exemple sur la page https://www.horseandropes.fr/accessoires/192-ceinture-a-poches.html avec le Bleu taille S.

Ca me pose problème car les clients pourraient être tentés de penser qu'il n'y a pas de stock du tout pour ce produit, quelque soit les déclinaisons et quitter la page (si la déclinaison par défaut n'a plus de stock).

Voici le contenu de mes product.tpl et product.js, j'imagine que ça se joue la dedans. J'ai déjà fait quelques essais infructueux.

Si quelqu'un comprend ces codes et sait m'aider, merci d'avance :)

 

product.tpl :

                {if $PS_STOCK_MANAGEMENT}
                    {if ($product->quantity <= 0 && !$product->available_later && $allow_oosp) || ($product->quantity > 0 && !$product->available_now) || !$product->available_for_order || $PS_CATALOG_MODE}

                    {else}
                        <!-- Stock information -->
                        <div id="availability_statut" class="iconed-text">
                            <span class="wpicon wpicon-box medium"></span>
                            <span id="availability_value"{if $product->quantity <= 0 && !$allow_oosp} class="warning_inline"{/if}>
                                {if $product->quantity <= 0}
                                    {if $allow_oosp}
                                        {$product->available_later}
                                    {else}
                                        {l s='This product is no longer in stock'}
                                    {/if}
                                {else}
                                    {$product->available_now}
                                {/if}
                            </span>
                            {hook h="displayProductDeliveryTime" product=$product}
                        </div>
                        <div class="iconed-text warning_inline" id="last_quantities"{if ($product->quantity > $last_qties || $product->quantity <= 0) || $allow_oosp || !$product->available_for_order || $PS_CATALOG_MODE} style="display: none"{/if} >
                            <span class="wpicon wpicon-info medium"></span>
                            {l s='Warning: Last items in stock!'}
                        </div>
                    {/if}
                {/if}

product.js :

		//display that the product is unavailable with theses attributes
		if (!selectedCombination['unavailable'])
		{
			$('#availability_value').text(doesntExistNoMore + (globalQuantity > 0 ? ' ' + doesntExistNoMoreBut : ''));
			if (!allowBuyWhenOutOfStock)
				$('#availability_value').addClass('warning_inline');
		}
		else
		{
			$('#availability_value').text(doesntExist).addClass('warning_inline');
			$('#oosHook').hide();
		}
		if (stock_management == 1 && !allowBuyWhenOutOfStock)
			$('#availability_statut:hidden').show();

 

Link to comment
Share on other sites

Bonjour,

En fait je ne l'ai pas mise à jour depuis un moment, je suis bloqué en 1.6.0.9 car le développeur de mon thème a arrêté le support. Le problème est présent depuis longtemps je pense.

Mon product.tpl :

{addJsDef specific_currency=($product->specificPrice && $product->specificPrice.id_currency)|boolval} {* TODO: remove if always false *}
{addJsDef stock_management=$PS_STOCK_MANAGEMENT|intval}
{addJsDef taxRate=$tax_rate|floatval}
{addJsDefL name=doesntExist}{l s='This combination does not exist for this product. Please select another combination.' js=1}{/addJsDefL}
{addJsDefL name=doesntExistNoMore}{l s='This product is no longer in stock' js=1}{/addJsDefL}
{addJsDefL name=doesntExistNoMoreBut}{l s='with those attributes but is available with others.' js=1}{/addJsDefL}
{addJsDefL name=fieldRequired}{l s='Please fill in all the required fields before saving your customization.' js=1}{/addJsDefL}
{addJsDefL name=uploading_in_progress}{l s='Uploading in progress, please be patient.' js=1}{/addJsDefL}
{addJsDefL name='product_fileDefaultHtml'}{l s='No file selected' js=1}{/addJsDefL}
{addJsDefL name='product_fileButtonHtml'}{l s='Choose File' js=1}{/addJsDefL}
{/strip}
{/if}

Celui du thème par défaut de la dernière version 1.6.1.18 :

{addJsDef specific_currency=($product->specificPrice && $product->specificPrice.id_currency)|boolval} {* TODO: remove if always false *}
{addJsDef stock_management=$PS_STOCK_MANAGEMENT|intval}
{addJsDef taxRate=$tax_rate|floatval}
{addJsDefL name=doesntExist}{l s='This combination does not exist for this product. Please select another combination.' js=1}{/addJsDefL}
{addJsDefL name=doesntExistNoMore}{l s='This product is no longer in stock' js=1}{/addJsDefL}
{addJsDefL name=doesntExistNoMoreBut}{l s='with those attributes but is available with others.' js=1}{/addJsDefL}
{addJsDefL name=fieldRequired}{l s='Please fill in all the required fields before saving your customization.' js=1}{/addJsDefL}
{addJsDefL name=uploading_in_progress}{l s='Uploading in progress, please be patient.' js=1}{/addJsDefL}
{addJsDefL name='product_fileDefaultHtml'}{l s='No file selected' js=1}{/addJsDefL}
{addJsDefL name='product_fileButtonHtml'}{l s='Choose File' js=1}{/addJsDefL}
{/strip}
{/if}

 

A priori ce sont les mêmes.

 

Mon product.js :

        //display that the product is unavailable with theses attributes
        if (!selectedCombination['unavailable'])
        {
            $('#availability_value').text(doesntExistNoMore + (globalQuantity > 0 ? ' ' + doesntExistNoMoreBut : ''));
            if (!allowBuyWhenOutOfStock)
                $('#availability_value').addClass('warning_inline');
        }
        else
        {
            $('#availability_value').text(doesntExist).addClass('warning_inline');
            $('#oosHook').hide();
        }
        if (stock_management == 1 && !allowBuyWhenOutOfStock)
            $('#availability_statut:hidden').show();

 

Le product.js de la 1.6.1.18 :

        //display that the product is unavailable with theses attributes
        if (!selectedCombination['unavailable'])
        {
            $('#availability_value').text(doesntExistNoMore + (globalQuantity > 0 ? ' ' + doesntExistNoMoreBut : ''));
            if (!allowBuyWhenOutOfStock)
                $('#availability_value').removeClass('label-success').addClass('label-warning');
        }
        else
        {
            $('#availability_value').text(doesntExist).removeClass('label-success').addClass('label-warning');
            $('#oosHook').hide();
        }

        if ((stock_management == 1 && !allowBuyWhenOutOfStock) || (!stock_management && selectedCombination['unavailable']))
            $('#availability_statut:hidden').show();


Il y a des différences, notamment removeClass('label-success') en plus et addClass('label-warning') au lieu de addClass('warning_inline'). J'ai éssayé de remplacer mon code par celui de la 1.6.1.18 mais ça n'a rien changé après un vidage des caches (de mon hébergeur, des fichiers smarty sur mon ftp, du menu paramètres avancés / performances)

Edited by benbine
précision (see edit history)
Link to comment
Share on other sites

hum... il en manque un gros bout, là ou son déclarées les variables^^

Si vous n'avez pas fait de mise à jour il faut comparer avec le thème par defaut de la 1.6.0.9

{strip}
{if isset($smarty.get.ad) && $smarty.get.ad}
	{addJsDefL name=ad}{$base_dir|cat:$smarty.get.ad|escape:'html':'UTF-8'}{/addJsDefL}
{/if}
{if isset($smarty.get.adtoken) && $smarty.get.adtoken}
	{addJsDefL name=adtoken}{$smarty.get.adtoken|escape:'html':'UTF-8'}{/addJsDefL}
{/if}
{addJsDef allowBuyWhenOutOfStock=$allow_oosp|boolval}
{addJsDef availableNowValue=$product->available_now|escape:'quotes':'UTF-8'}
{addJsDef availableLaterValue=$product->available_later|escape:'quotes':'UTF-8'}
{addJsDef attribute_anchor_separator=$attribute_anchor_separator|escape:'quotes':'UTF-8'}
{addJsDef attributesCombinations=$attributesCombinations}
{addJsDef currentDate=$smarty.now|date_format:'%Y-%m-%d %H:%M:%S'}
{if isset($combinations) && $combinations}
	{addJsDef combinations=$combinations}
	{addJsDef combinationsFromController=$combinations}
	{addJsDef displayDiscountPrice=$display_discount_price}
	{addJsDefL name='upToTxt'}{l s='Up to' js=1}{/addJsDefL}
{/if}
{if isset($combinationImages) && $combinationImages}
	{addJsDef combinationImages=$combinationImages}
{/if}
{addJsDef customizationId=$id_customization}
{addJsDef customizationFields=$customizationFields}
{addJsDef default_eco_tax=$product->ecotax|floatval}
{addJsDef displayPrice=$priceDisplay|intval}
{addJsDef ecotaxTax_rate=$ecotaxTax_rate|floatval}
{if isset($cover.id_image_only)}
	{addJsDef idDefaultImage=$cover.id_image_only|intval}
{else}
	{addJsDef idDefaultImage=0}
{/if}
{addJsDef img_ps_dir=$img_ps_dir}
{addJsDef img_prod_dir=$img_prod_dir}
{addJsDef id_product=$product->id|intval}
{addJsDef jqZoomEnabled=$jqZoomEnabled|boolval}
{addJsDef maxQuantityToAllowDisplayOfLastQuantityMessage=$last_qties|intval}
{addJsDef minimalQuantity=$product->minimal_quantity|intval}
{addJsDef noTaxForThisProduct=$no_tax|boolval}
{if isset($customer_group_without_tax)}
	{addJsDef customerGroupWithoutTax=$customer_group_without_tax|boolval}
{else}
	{addJsDef customerGroupWithoutTax=false}
{/if}
{if isset($group_reduction)}
	{addJsDef groupReduction=$group_reduction|floatval}
{else}
	{addJsDef groupReduction=false}
{/if}
{addJsDef oosHookJsCodeFunctions=Array()}
{addJsDef productHasAttributes=isset($groups)|boolval}
{addJsDef productPriceTaxExcluded=($product->getPriceWithoutReduct(true)|default:'null' - $product->ecotax)|floatval}
{addJsDef productPriceTaxIncluded=($product->getPriceWithoutReduct(false)|default:'null' - $product->ecotax * (1 + $ecotaxTax_rate / 100))|floatval}
{addJsDef productBasePriceTaxExcluded=($product->getPrice(false, null, 6, null, false, false) - $product->ecotax)|floatval}
{addJsDef productBasePriceTaxExcl=($product->getPrice(false, null, 6, null, false, false)|floatval)}
{addJsDef productBasePriceTaxIncl=($product->getPrice(true, null, 6, null, false, false)|floatval)}
{addJsDef productReference=$product->reference|escape:'html':'UTF-8'}
{addJsDef productAvailableForOrder=$product->available_for_order|boolval}
{addJsDef productPriceWithoutReduction=$productPriceWithoutReduction|floatval}
{addJsDef productPrice=$productPrice|floatval}
{addJsDef productUnitPriceRatio=$product->unit_price_ratio|floatval}
{addJsDef productShowPrice=(!$PS_CATALOG_MODE && $product->show_price)|boolval}
{addJsDef PS_CATALOG_MODE=$PS_CATALOG_MODE}
{if $product->specificPrice && $product->specificPrice|@count}
	{addJsDef product_specific_price=$product->specificPrice}
{else}
	{addJsDef product_specific_price=array()}
{/if}
{if $display_qties == 1 && $product->quantity}
	{addJsDef quantityAvailable=$product->quantity}
{else}
	{addJsDef quantityAvailable=0}
{/if}
{addJsDef quantitiesDisplayAllowed=$display_qties|boolval}
{if $product->specificPrice && $product->specificPrice.reduction && $product->specificPrice.reduction_type == 'percentage'}
	{addJsDef reduction_percent=$product->specificPrice.reduction*100|floatval}
{else}
	{addJsDef reduction_percent=0}
{/if}
{if $product->specificPrice && $product->specificPrice.reduction && $product->specificPrice.reduction_type == 'amount'}
	{addJsDef reduction_price=$product->specificPrice.reduction|floatval}
{else}
	{addJsDef reduction_price=0}
{/if}
{if $product->specificPrice && $product->specificPrice.price}
	{addJsDef specific_price=$product->specificPrice.price|floatval}
{else}
	{addJsDef specific_price=0}
{/if}
{addJsDef specific_currency=($product->specificPrice && $product->specificPrice.id_currency)|boolval} {* TODO: remove if always false *}
{addJsDef stock_management=$PS_STOCK_MANAGEMENT|intval}
{addJsDef taxRate=$tax_rate|floatval}
{addJsDefL name=doesntExist}{l s='This combination does not exist for this product. Please select another combination.' js=1}{/addJsDefL}
{addJsDefL name=doesntExistNoMore}{l s='This product is no longer in stock' js=1}{/addJsDefL}
{addJsDefL name=doesntExistNoMoreBut}{l s='with those attributes but is available with others.' js=1}{/addJsDefL}
{addJsDefL name=fieldRequired}{l s='Please fill in all the required fields before saving your customization.' js=1}{/addJsDefL}
{addJsDefL name=uploading_in_progress}{l s='Uploading in progress, please be patient.' js=1}{/addJsDefL}
{addJsDefL name='product_fileDefaultHtml'}{l s='No file selected' js=1}{/addJsDefL}
{addJsDefL name='product_fileButtonHtml'}{l s='Choose File' js=1}{/addJsDefL}
{/strip}
{/if}

 

Link to comment
Share on other sites

Ah oui ^^

Mais la du coup il y a beaucoup de différences :

 

{strip}
{if isset($smarty.get.ad) && $smarty.get.ad}
{addJsDefL name=ad}{$base_dir|cat:$smarty.get.ad|escape:'html':'UTF-8'}{/addJsDefL}
{/if}
{if isset($smarty.get.adtoken) && $smarty.get.adtoken}
{addJsDefL name=adtoken}{$smarty.get.adtoken|escape:'html':'UTF-8'}{/addJsDefL}
{/if}
{addJsDef allowBuyWhenOutOfStock=$allow_oosp|boolval}
{addJsDef availableNowValue=$product->available_now|escape:'quotes':'UTF-8'}
{addJsDef availableLaterValue=$product->available_later|escape:'quotes':'UTF-8'}
{addJsDef attribute_anchor_separator=$attribute_anchor_separator|escape:'quotes':'UTF-8'}
{addJsDef attributesCombinations=$attributesCombinations}
{addJsDef currencySign=$currencySign|html_entity_decode:2:"UTF-8"}
{addJsDef currencyRate=$currencyRate|floatval}
{addJsDef currencyFormat=$currencyFormat|intval}
{addJsDef currencyBlank=$currencyBlank|intval}
{addJsDef currentDate=$smarty.now|date_format:'%Y-%m-%d %H:%M:%S'}
{if isset($combinations) && $combinations}
	{addJsDef combinations=$combinations}
    {addJsDef combinationsFromController=$combinations}
    {addJsDef displayDiscountPrice=$display_discount_price}
    {addJsDefL name='upToTxt'}{l s='Up to' js=1}{/addJsDefL}
{/if}
{if isset($combinationImages) && $combinationImages}
	{addJsDef combinationImages=$combinationImages}
{/if}
{addJsDef customizationFields=$customizationFields}
{addJsDef default_eco_tax=$product->ecotax|floatval}
{addJsDef displayPrice=$priceDisplay|intval}
{addJsDef ecotaxTax_rate=$ecotaxTax_rate|floatval}
{addJsDef group_reduction=$group_reduction}
{if isset($cover.id_image_only)}
	{addJsDef idDefaultImage=$cover.id_image_only|intval}
{else}
	{addJsDef idDefaultImage=0}
{/if}
{addJsDef img_ps_dir=$img_ps_dir}
{addJsDef img_prod_dir=$img_prod_dir}
{addJsDef id_product=$product->id|intval}
{addJsDef jqZoomEnabled=$jqZoomEnabled|boolval}
{addJsDef maxQuantityToAllowDisplayOfLastQuantityMessage=$last_qties|intval}
{addJsDef minimalQuantity=$product->minimal_quantity|intval}
{addJsDef noTaxForThisProduct=$no_tax|boolval}
{addJsDef customerGroupWithoutTax=$customer_group_without_tax|boolval}
{addJsDef oosHookJsCodeFunctions=Array()}
{addJsDef productHasAttributes=isset($groups)|boolval}
{addJsDef productPriceTaxExcluded=($product->getPriceWithoutReduct(true)|default:'null' - $product->ecotax)|floatval}
{addJsDef productBasePriceTaxExcluded=($product->base_price - $product->ecotax)|floatval}
{addJsDef productBasePriceTaxExcl=($product->base_price|floatval)}
{addJsDef productReference=$product->reference|escape:'html':'UTF-8'}
{addJsDef productAvailableForOrder=$product->available_for_order|boolval}
{addJsDef productPriceWithoutReduction=$productPriceWithoutReduction|floatval}
{addJsDef productPrice=$productPrice|floatval}
{addJsDef productUnitPriceRatio=$product->unit_price_ratio|floatval}
{addJsDef productShowPrice=(!$PS_CATALOG_MODE && $product->show_price)|boolval}
{addJsDef PS_CATALOG_MODE=$PS_CATALOG_MODE}
{if $product->specificPrice && $product->specificPrice|@count}
	{addJsDef product_specific_price=$product->specificPrice}
{else}
	{addJsDef product_specific_price=array()}
{/if}
{if $display_qties == 1 && $product->quantity}
	{addJsDef quantityAvailable=$product->quantity}
{else}
	{addJsDef quantityAvailable=0}
{/if}
{addJsDef quantitiesDisplayAllowed=$display_qties|boolval}
{if $product->specificPrice && $product->specificPrice.reduction && $product->specificPrice.reduction_type == 'percentage'}
	{addJsDef reduction_percent=$product->specificPrice.reduction*100|floatval}
{else}
	{addJsDef reduction_percent=0}
{/if}
{if $product->specificPrice && $product->specificPrice.reduction && $product->specificPrice.reduction_type == 'amount'}
	{addJsDef reduction_price=$product->specificPrice.reduction|floatval}
{else}
	{addJsDef reduction_price=0}
{/if}
{if $product->specificPrice && $product->specificPrice.price}
	{addJsDef specific_price=$product->specificPrice.price|floatval}
{else}
	{addJsDef specific_price=0}
{/if}
{addJsDef specific_currency=($product->specificPrice && $product->specificPrice.id_currency)|boolval} {* TODO: remove if always false *}
{addJsDef stock_management=$PS_STOCK_MANAGEMENT|intval}
{addJsDef taxRate=$tax_rate|floatval}
{addJsDefL name=doesntExist}{l s='This combination does not exist for this product. Please select another combination.' js=1}{/addJsDefL}
{addJsDefL name=doesntExistNoMore}{l s='This product is no longer in stock' js=1}{/addJsDefL}
{addJsDefL name=doesntExistNoMoreBut}{l s='with those attributes but is available with others.' js=1}{/addJsDefL}
{addJsDefL name=fieldRequired}{l s='Please fill in all the required fields before saving your customization.' js=1}{/addJsDefL}
{addJsDefL name=uploading_in_progress}{l s='Uploading in progress, please be patient.' js=1}{/addJsDefL}
{addJsDefL name='product_fileDefaultHtml'}{l s='No file selected' js=1}{/addJsDefL}
{addJsDefL name='product_fileButtonHtml'}{l s='Choose File' js=1}{/addJsDefL}
{/strip}
{/if}

 

Link to comment
Share on other sites

Il faut comprendre une chose: dans le product.tpl des variables sont affectées en javascript depuis les variables smarty.

Les combinaisons et leurs caractéristiques sont entièrement chargées en javascript à partir des variables fournies dans le tpl

S'il manque une ou plusieurs variables ou qu'elles sont vides le tableau des combinaisons est incomplet.

Il faut donc tracer les lignes de votre js qui doivent réagir au changement de décli et modifier l'affichage et voir ce qui leur manque.

Link to comment
Share on other sites

Logiquement j'aurai pensé que mon problème se situe dans les différences de la fonction updateDisplay()  mais ils sont quasi identiques :

https://www.diffchecker.com/VjtAH3os

(à gauche mon js, à droite celui du theme par défaut en 1.6.0.9)

Ce que je ne m'explique pas, c'est que pour un produit sans déclinaison, j'affiche bien le message, je comprend que j'arrive bien au "doesntExistNoMore" (ligne 502). Mais je ne comprend pas pourquoi je ne vais pas jusqu'au "doesntExistNoMoreBut". La ligne est identique dans le theme par défaut.

Link to comment
Share on other sites

Ah ok, merci.

Pourriez-vous préciser svp ce que vous proposez ici :

13 hours ago, Eolia said:

Il faut donc tracer les lignes de votre js qui doivent réagir au changement de décli et modifier l'affichage et voir ce qui leur manque.

 

Link to comment
Share on other sites

// search the combinations' case of attributes and update displaying of availability, prices, ecotax, and image
function findCombination()
{
   ....
//update display of the availability of the product AND the prices of the product
function updateDisplay()
{
	var productPriceDisplay = productPrice;
	var productPriceWithoutReductionDisplay = productPriceWithoutReduction;

	if (!selectedCombination['unavailable'] && quantityAvailable > 0 && productAvailableForOrder == 1)
	{
      ...

Dans cette fonction on retrouve votre code cité plus haut et donc, la div ayant l'id "availability_value" doit être mise à jour avec le code suivant:

		//display that the product is unavailable with theses attributes
		if (!selectedCombination['unavailable'])
		{
			$('#availability_value').text(doesntExistNoMore + (globalQuantity > 0 ? ' ' + doesntExistNoMoreBut : ''));
			if (!allowBuyWhenOutOfStock)
				$('#availability_value').removeClass('label-success').addClass('label-warning');
		}

Vous dites que ce n'est pas le cas MAIS que le bouton ajouter au panier disparaît donc ce code fonctionne:

		//show the 'add to cart' button ONLY IF it's possible to buy when out of stock AND if it was previously invisible
		if (allowBuyWhenOutOfStock && !selectedCombination['unavailable'] && productAvailableForOrder)
		{
			...
		}
		else
		{
			$('#add_to_cart:visible').fadeOut(600);
			if (stock_management == 1 && productAvailableForOrder)
				$('#availability_statut:hidden').show('slow');
		}

 

En analysant le code de votre page il est clair que l'élément "availability_value" n'existe pas dans votre product.tpl, et que la classe "warning-inline" n'est pas définie dans votre css.

En ajoutant cette div et avec une règle rapide css, j'obtient ceci:

image.png.642be28aff19a15ee8a67b6a4cde07e4.png

Link to comment
Share on other sites

Bonjour et merci pour ce retour constructif. Je sens qu'on touche au but :)

J'ai bien une définition de "availability_value" dans mon product.tpl :

  <!-- Stock information -->
                        <div id="availability_statut" class="iconed-text">
                            <span class="wpicon wpicon-box medium"></span>
                            <span id="availability_value"{if $product->quantity <= 0 && !$allow_oosp} class="warning_inline"{/if}>
                                {if $product->quantity <= 0}
                                    {if $allow_oosp}
                                        {$product->available_later}
                                    {else}
                                        {l s='This product is no longer in stock'}
                                    {/if}
                                {else}
                                    {$product->available_now}
                                {/if}
                            </span>
                            {hook h="displayProductDeliveryTime" product=$product}
                        </div>

D'ailleurs ça fonctionne bien pour un produit sans déclinaison (https://www.horseandropes.fr/flags/82-flag.html) puisqu'on voit bien le message et le logo qui correspondent aux lignes suivantes :

{l s='This product is no longer in stock'}
<span class="wpicon wpicon-box medium"></span>

J'ai bien un css pour warning_inline :

.pb-right-column .warning_inline {
    color: #d9534f!important;
    font-weight: bold!important;
}

 

J'ai essayé de modifier le availability_value dans le js comme vous le suggériez :

if (!selectedCombination['unavailable'])
		{
				$('#availability_value').text(doesntExistNoMore + (globalQuantity > 0 ? ' ' + doesntExistNoMoreBut : ''));
			if (!allowBuyWhenOutOfStock)
				$('#availability_value').removeClass('label-success').addClass('label-warning');
		}

Et de reprendre le css du theme 1.6.0.9 :

#availability_statut #availability_value.warning_inline {
  background-color: #fe9126;
  border-color: #e4752b;
  text-shadow: 1px 1px #e68322;
  margin: 0; }

Mais rien ne s'affiche pour moi, même en remettant ce qui me semble correspondre au css dans le js :

		if (!selectedCombination['unavailable'])
		{
			$('#availability_value').text(doesntExistNoMore + (globalQuantity > 0 ? ' ' + doesntExistNoMoreBut : ''));
			if (!allowBuyWhenOutOfStock)
				$('#availability_value').addClass('warning_inline');
		}

 

Savez-vous comment je peux vérifier que je rentre bien dans la condition if (!selectedCombination['unavailable']) ? Peut-on ajouter un texte par exemple à cet endroit pour être sur de bien chercher au bon endroit ?

Link to comment
Share on other sites

Non, ne vous prenez pas la tête, la div n'existe pas si le produit a des déclinaisons:

image.png.457e5d015fb1d73e2b1bf01256417838.png

Donc votre smarty doit la supprimer. (ou son parent 'availability_statut', que je ne trouve pas non plus dans la page)

Dans mon exemple, j'ai créé cet div sur votre page et tout fonctionne.

Trouvez la ligne qui fait un remove/non affichage de availability_statut et commentez-là et tout rentrera dans l'ordre^^

 

Edited by Eolia (see edit history)
Link to comment
Share on other sites

Non, vous ne m'avez pas compris...

Ce n'est pas dans le js (je ne le vois pas dans le code) et un hide() cache mais ne supprime pas.

Vous devez avoir une condition dans le tpl en Smarty avant cette div. Quelque chose qui ressemble à {if.....} et une balise de fermeture {/if}

Envoyez votre product.tpl ici svp en fichier joint.

Link to comment
Share on other sites

Donc votre tpl n'est pas d'origine ou a été bien bricolé parce que ce n'est pas normal de ne rien avoir dans la premiere condition:

image.thumb.png.3a34a920773974481d75968b5d394635.png

Entre le {if ...} et le {else}

Donc au pire, mettez dedans ceci:

<div id="availability_statut" class="iconed-text" style=display:none;">
     <span class="wpicon wpicon-box medium"></span>
     <span id="availability_value" class="warning_inline"></span>
</div>

 

Link to comment
Share on other sites

  • 3 months later...

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...