Jump to content

Personnaliser affichage attribut selon ID dans récapitulatif panier (Résolu)


Recommended Posts

Bonjour à la communauté,

Je souhaiterai personnaliser l'affichage dans le récapitulatif 'PANIER' en rajoutant une mention selon l'ID de l'attribut attaché au produit. Je suis en prestashop 1.7.8

Exemple : si attribut ID = 34 ou groupe d'attribut ID = 45 > J'affiche l'attribut + la mention 'Sur devis uniquement'. Sinon j'affiche rien ou 'autre chose'

J'ai tenté ceci sur le fichier themes/templates/checkout/_partials/cart-detailed-product-line.tpl, cela ne fonctionne pas ;

{foreach from=$product.attributes key="attribute" item="value"}
      <div class="product-line-info">
      {if $product.attributes_label == 'Pose'}
    <span class="label">{$attribute} :</span>
        <span class="value">{$value} {l s='sur devis'} {else} {l s='mm'}</span>
        {/if}
      </div>
    {/foreach}

--- ou

{foreach from=$product.attributes key="attribute" item="value"}
      <div class="product-line-info">
      {if $id.attribute.group == 235}
    <span class="label">{$attribute} :</span>
        <span class="value">{$value} {l s='sur devis'} {else} {l s='mm'}</span>
        {/if}
      </div>
    {/foreach}

J'ai tenté plusieurs variantes mais aucune ne fonctionne. Je pense avoir un soucis avec l'appel de la variable mais je n'arrive pas à trouver ou cela cloche, n'étant pas un expert en code.

 

Merci pour votre aide.

Edited by [email protected] (see edit history)
Link to comment
Share on other sites

Essayez ce code, assurez-vous également de vider le cache après avoir apporté des modifications au code pour vous assurer que les modifications prennent effet.
 

{foreach from=$product.attributes key="attributeId" item="attribute"}
    <div class="product-line-info">
        {if $attributeId == 34 or $attribute.attribute_group_id == 45}
            <span class="label">{$attribute.name} :</span>
            <span class="value">{$attribute.value} {l s='Sur devis uniquement'}</span>
        {else}
            <span class="label">{$attribute.name} :</span>
            <span class="value">{$attribute.value}</span>
        {/if}
    </div>
{/foreach}

ou ce code avec plusieurs ID

 

{foreach from=$product.attributes key="attributeId" item="attribute"}
    <div class="product-line-info">
        {if in_array($attributeId, [34, 35, 36]) or in_array($attribute.attribute_group_id, [45, 46, 47])}
            <span class="label">{$attribute.name} :</span>
            <span class="value">{$attribute.value} {l s='Sur devis uniquement'}</span>
        {else}
            <span class="label">{$attribute.name} :</span>
            <span class="value">{$attribute.value}</span>
        {/if}
    </div>
{/foreach}

 

Link to comment
Share on other sites

Bonjour RMK_Code,

Merci pour votre aide. Malheureusement cela ne fonctionne pas quelque soit la méthode utilisée. Les 2 scripts retournent les même valeurs (cf screenshot-1) sans prendre en compte 'la condition'. J'ai renseigné le script de la façon suivante afin d'identifier les valeurs retournées ;

{foreach from=$product.attributes key="attributeId" item="attribute"}
    <div class="product-line-info">
        {if $attributeId == 235 or $attribute.attribute_group_id == 34}
            <span class="label">{$attribute.name} :</span>
            <span class="value">{$attribute.value} {l s='+ valeur du if'}</span>
        {else}
            <span class="label">{$attribute.name} :</span>
            <span class="value">{$attribute.value} {l s='+ valeur du else'}</span>
        {/if}
    </div>
{/foreach}

Comme vous pouvez le voir sur la capture, il n'y a que le 'else' qui renvoie une valeur (l'attribut 235 obéis bien sûr au 'if'). J'ai testé plusieurs modifications mais rien ne fonctionne… Si vous avez une idée, je suis preneur car là je bute. Merci d'avance

screenshot-1.jpg

Link to comment
Share on other sites

{foreach from=$product.attributes key="attributeId" item="attribute"}
    <div class="product-line-info">
        {var_dump($attributeId, $attribute)}
        {if $attributeId == 235 or $attribute.attribute_group_id == 34}
            <span class="label">{$attribute.name} :</span>
            <span class="value">{$attribute.value} {l s='+ valeur du if'}</span>
        {else}
            <span class="label">{$attribute.name} :</span>
            <span class="value">{$attribute.value} {l s='+ valeur du else'}</span>
        {/if}
    </div>
{/foreach}

Quelques modifications mineures ont été apportées au code. Vous pouvez l'essayer pour voir s'il fonctionne. Si ce n'est pas le cas, vous aurez besoin de l'aide d'un Pro 😃

Ou ca ?. 

{foreach from=$product.attributes key="attributeId" item="attribute"}
    <div class="product-line-info">
        {var_dump($attributeId, $attribute)}
        {if $attributeId == 235}
            <span class="label">{$attribute.name} :</span>
            <span class="value">{$attribute.value} {l s='+ valeur du if'}</span>
        {elseif $attribute.attribute_group_id == 34}
            <span class="label">{$attribute.name} :</span>
            <span class="value">{$attribute.value} {l s='+ valeur du else if'}</span>
        {else}
            <span class="label">{$attribute.name} :</span>
            <span class="value">{$attribute.value} {l s='+ valeur du else'}</span>
        {/if}
    </div>
{/foreach}

 

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

Bonjour Mediacom87, merci pour votre commentaire.

J'ai finalement résolu mon problème. Le plus simple était d'appeler le nom de l'attribut en question et ses valeurs.

{foreach from=$product.attributes key="attribute" item="value"}
      <div class="product-line-info">
      {if $attribute == 'OPTION POSE SUR SITE' AND $value == 'Avec installation' }
        <span class="label">{$attribute} :</span><br/>
        <strong><span class="value">{$value} {l s='(sur devis uniquement)'}</span></strong>
        {elseif $value == 'Sans installation'}
        <span class="label">{$attribute} :</span><br/>
        <span class="value">{$value}</span>
        {else}
            <span class="label">{$attribute} :</span>
            <span class="value">{$value} {l s='mm'}</span>
        {/if}
      </div>
    {/foreach}

Merci pour votre aide

Link to comment
Share on other sites

  • [email protected] changed the title to Personnaliser affichage attribut selon ID dans récapitulatif panier (Résolu)

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