[email protected] Posted December 12, 2023 Share Posted December 12, 2023 (edited) 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 December 14, 2023 by [email protected] (see edit history) Link to comment Share on other sites More sharing options...
RMK_Code Posted December 13, 2023 Share Posted December 13, 2023 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 More sharing options...
[email protected] Posted December 13, 2023 Author Share Posted December 13, 2023 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 Link to comment Share on other sites More sharing options...
RMK_Code Posted December 13, 2023 Share Posted December 13, 2023 (edited) {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 December 13, 2023 by RMK_Code (see edit history) Link to comment Share on other sites More sharing options...
[email protected] Posted December 13, 2023 Author Share Posted December 13, 2023 RMK_Code, merci pour votre aide, mais j'ai toujours uniquement la valeur du 'else' qui est renvoyée (screenshot) ainsi que la mention 'string'. Je vais pousser encore mes investigations… Si un expert passe par là, son aide me sera précieuse. Link to comment Share on other sites More sharing options...
Mediacom87 Posted December 13, 2023 Share Posted December 13, 2023 Là, vous avez surtout le var_dump qui affiche toutes les données du tableau permettant ainsi de connaître les valeurs sur lesquels effectuer vos tests. Donc, retirez les var_dump du code. Link to comment Share on other sites More sharing options...
[email protected] Posted December 14, 2023 Author Share Posted December 14, 2023 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 More sharing options...
Mediacom87 Posted December 14, 2023 Share Posted December 14, 2023 Plus simple peut-être, mais au moindre changement plus rien ne fonctionne, c'est toujours pour cela que nous partons sur les ID qui sont immuables sauf à effacer l'option qui donc n'aura plus aucune importance puisque si l'option n'existe plus le besoin non plus. Link to comment Share on other sites More sharing options...
[email protected] Posted December 14, 2023 Author Share Posted December 14, 2023 Tout à fait d'accord Mediacom87. J'ai tenté pas mal de chose mais rien n'aboutissais. L'urgence m'a conduit à cette solution. Néanmoins, je suis toujours preneur d'une solution plus 'propre' afin de parfaire mes connaissance. 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