Manu-41 Posted November 22, 2022 Share Posted November 22, 2022 (edited) Bonjour, je voudrais savoir s'il y a un moyen ou un module pour trier les transporteurs par livraison Exemple, j'ai 6 transporteurs, 3 en relais, et 3 à domicile. Mais je voudrais les distinguer. LIVRAISON EN RELAIS transporteur 1 transporteur 2 transporteur 3 --------------- LIVRAISON A DOMICILE transporteur 1 transporteur 2 transporteur 3 Merci pour votre aide. Edited November 30, 2022 by Manu-41 ok (see edit history) Link to comment Share on other sites More sharing options...
Eolia Posted November 22, 2022 Share Posted November 22, 2022 Ben il y a une colonne "position" dans le listing transporteurs. Il suffit ensuite de les afficher par position^^ Link to comment Share on other sites More sharing options...
Manu-41 Posted November 22, 2022 Author Share Posted November 22, 2022 Merci eolia pour ta réponse. Je voudrais les differencier en fo dans le tunnel de commande. Dans l exemple, les point relais e. Premier, on laisse une marge, à domicile ensuite. En gros, les grouper par id ou par mode de livraison. Link to comment Share on other sites More sharing options...
Eolia Posted November 22, 2022 Share Posted November 22, 2022 Pour la marge il faudra bricoler en js ou css mais pour l'ordre c'est comme j'ai dit. Les ordonner par position en BO et ensuite: Link to comment Share on other sites More sharing options...
Manu-41 Posted November 22, 2022 Author Share Posted November 22, 2022 Je comprends pour le tri. J'aurais voulu ajouter un texte avant chaque liste. Comme dans mon exemple : LIVRAISON EN RELAIS transporteur 1 transporteur 2 transporteur 3 --------------- LIVRAISON A DOMICILE transporteur 1 transporteur 2 transporteur 3 Link to comment Share on other sites More sharing options...
Eolia Posted November 22, 2022 Share Posted November 22, 2022 Ben là il faudra aller mettre les mains dans le code du tpl dans la boucle {foreach} qui gère l'affichage des deliveryOptionList. Link to comment Share on other sites More sharing options...
Manu-41 Posted November 22, 2022 Author Share Posted November 22, 2022 En ajoutant des conditions ? Link to comment Share on other sites More sharing options...
Manu-41 Posted November 22, 2022 Author Share Posted November 22, 2022 (edited) Voici le code dans mon tpl {foreach from=$delivery_options item=carrier key=carrier_id} <div class="delivery-option pb-2 mb-2 border-bottom"> <div class="custom-control custom-radio"> <input class="custom-control-input" type="radio" name="delivery_option[{$id_address}]" id="delivery_option_{$carrier.id}" value="{$carrier_id}" {if $delivery_option == $carrier_id}checked{/if}> <label class="custom-control-label d-block d-sm-flex justify-content-between align-items-center" for="delivery_option_{$carrier.id}"> {*<div style="position: absolute;"><img class="hidden" src="{$urls.img_url}ship/{$carrier.id}.jpg" /></div>*} <div class="d-flex flex-column" {*style="margin-left: 4rem;"*}> <span class="text-dark font-size-md font-weight-medium">{$carrier.name}</span> <span class="text-muted carrier-delay">{$carrier.delay}</span> </div> <span class="text-accent font-size-md"> {if !$display_taxe_label} {str_replace("TTC", "HT", $carrier.price)} {else} {$carrier.price} {/if} </span> </label> </div> {if $carrier.extraContent} <div class="carrier-extra-content js-carrier-extra-content" {if $delivery_option != $carrier_id}style="display: none;"{/if}> {$carrier.extraContent nofilter} </div> {/if} </div> {/foreach} est-ce que je suis sur le bon chemin ? 1, 2 ,3 étant mes transporteurs {foreach from=$delivery_options item=carrier key=carrier_id} {if $delivery_option && ($carrier.id == 1 || $carrier.id == 2 || $carrier.id == 3)} Merci pour votre aide Edited November 22, 2022 by Manu-41 ok (see edit history) Link to comment Share on other sites More sharing options...
Manu-41 Posted November 22, 2022 Author Share Posted November 22, 2022 5 hours ago, Eolia said: Ben là il faudra aller mettre les mains dans le code du tpl dans la boucle {foreach} qui gère l'affichage des deliveryOptionList. J'ai poursuivi mes recherches, et ca fonctionne {foreach from=$delivery_options item=carrier key=carrier_id} {if $delivery_option && ($carrier.id == 282 || $carrier.id == 284 || $carrier.id == 283 )} <div class="delivery-option pb-2 mb-2 border-bottom hidden"> <div class="custom-control custom-radio"> <input class="custom-control-input" type="radio" name="delivery_option[{$id_address}]" id="delivery_option_{$carrier.id}" value="{$carrier_id}" {if $delivery_option == $carrier_id}checked{/if}> <label class="custom-control-label d-block d-sm-flex justify-content-between align-items-center" for="delivery_option_{$carrier.id}"> {*<div style="position: absolute;"><img class="hidden" src="{$urls.img_url}ship/{$carrier.id}.jpg" /></div>*} <div class="d-flex flex-column" {*style="margin-left: 4rem;"*}> <span class="text-dark font-size-md font-weight-medium">{$carrier.name}</span> <span class="text-muted carrier-delay">{$carrier.delay}</span> </div> <span class="text-accent font-size-md"> {if !$display_taxe_label} {str_replace("TTC", "HT", $carrier.price)} {else} {$carrier.price} {/if} </span> </label> </div> {if $carrier.extraContent} <div class="carrier-extra-content js-carrier-extra-content" {if $delivery_option != $carrier_id}style="display: none;"{/if}> {$carrier.extraContent nofilter} </div> {/if} </div> {/if} {/foreach} J'ai collé 2 fois ce code en modifiant les autres id de transporteur. Mais, oui il en faut bien un, quand on sélectionne un mode de livraison en relais par exemple, le curseur reste sélectionné, et pas possible de sélectionner un autre transporteur, normalement pour la livraison à domicile. Ai-je oublié quelque chose? Link to comment Share on other sites More sharing options...
Manu-41 Posted November 23, 2022 Author Share Posted November 23, 2022 J'avance, mais là, je cale. Une aide serait la bienvenue voici où j'en suis : {foreach from=$delivery_options item=carrier key=carrier_id} {if $delivery_option && ($carrier.id == 282 || $carrier.id == 283 || $carrier.id == 284 )} <div class='order-1">Mes infos pour chaque transporteurs point relais</div> {/if} {if $delivery_option && ($carrier.id == 270 || $carrier.id == 277 || $carrier.id == 233 )} <div class='order-2">Mes infos pour chaque transporteurs domicile</div> {/if} {/foreach En ajoutant une classe CSS avec order, mes listes de transporteurs s'affichent bien dans l'ordre voulu. Là où le problème se pose, c'est que j'ai besoin d'ajouter un texte devant chaque liste. Il n'est pas possible d'ajouter un élément dans mon if, car il est dupliqué. Merci pour votre aide toujours précieuse Link to comment Share on other sites More sharing options...
Mediacom87 Posted November 23, 2022 Share Posted November 23, 2022 il faut passer par un compteur qui s'incrémente à chaque transporteur puis qu'on réinitialise lorsque l'on passe à un autre groupe de transporteur ou sinon il faut créer deux tableaux de transporteurs puis les afficher l'un après l'autre. Link to comment Share on other sites More sharing options...
Manu-41 Posted November 23, 2022 Author Share Posted November 23, 2022 14 minutes ago, Mediacom87 said: il faut passer par un compteur qui s'incrémente à chaque transporteur puis qu'on réinitialise lorsque l'on passe à un autre groupe de transporteur ou sinon il faut créer deux tableaux de transporteurs puis les afficher l'un après l'autre. j'avais testé avec 2 foreach, mais ça posait souci, car impossible de saisir un transporteur. J'ai retesté, et voici le résultat : Il me reste à regarder comment cacher le titre si il n'y a pas de transporteur dans ce groupe une idée ? 1 Link to comment Share on other sites More sharing options...
Manu-41 Posted November 23, 2022 Author Share Posted November 23, 2022 (edited) Pour afficher le nom du groupe (En point relais par exemple) si seulement les transporteurs sont disponibles, j'ai testé avec {if $delivery_option && ($carrier.id == 282 || $carrier.id == 283 || $carrier.id == 284 || $carrier.id == 264)} En point relais{/if} mais rien ne s'affiche. J'ai aussi testé avec ca: {foreach from=$delivery_options item=carrier key=carrier_id} {if $delivery_option && ($carrier.id == 282 || $carrier.id == 283 || $carrier.id == 284 || $carrier.id == 264)} <span class="hidden">En point relais</span> {/if} {/foreach} mais ça affiche 3 fois En point relais. Une idée? Edited November 23, 2022 by Manu-41 ok (see edit history) Link to comment Share on other sites More sharing options...
Manu-41 Posted November 23, 2022 Author Share Posted November 23, 2022 j'ia beau chercher, je ne trouve pas la solution pour afficher mon texte uniquement s'il y a l'un des transporteurs. Car s'il n'y a pas de transporteur dans mon groupe, le texte reste affiché. Link to comment Share on other sites More sharing options...
Manu-41 Posted November 23, 2022 Author Share Posted November 23, 2022 6 hours ago, Mediacom87 said: il faut passer par un compteur qui s'incrémente à chaque transporteur puis qu'on réinitialise lorsque l'on passe à un autre groupe de transporteur ou sinon il faut créer deux tableaux de transporteurs puis les afficher l'un après l'autre. j'ia beau chercher, je ne trouve pas la solution pour afficher mon texte uniquement s'il y a l'un des transporteurs. Car s'il n'y a pas de transporteur dans mon groupe, le texte reste affiché. Link to comment Share on other sites More sharing options...
Eolia Posted November 23, 2022 Share Posted November 23, 2022 C'est quoi votre tpl d'origine ? Link to comment Share on other sites More sharing options...
Manu-41 Posted November 24, 2022 Author Share Posted November 24, 2022 8 hours ago, Eolia said: C'est quoi votre tpl d'origine ? le TPL d'origine <div class="delivery-options-list"> {if $delivery_options|count} <form id="js-delivery" method="post" data-url-update="{url entity='order' params=['ajax' => 1, 'action' => 'selectDeliveryOption']}"> {block name='delivery_options'} <div class="delivery-options mb-4 row"> {foreach from=$delivery_options item=carrier key=carrier_id} <div class="delivery-option pb-2 mb-2 border-bottom" style="width: 100%;padding-left: 15px;"> <div class="custom-control custom-radio"> <input class="custom-control-input" type="radio" name="delivery_option[{$id_address}]" id="delivery_option_{$carrier.id}" value="{$carrier_id}" {if $delivery_option == $carrier_id}checked{/if}> <label class="custom-control-label d-block d-sm-flex justify-content-between align-items-center" for="delivery_option_{$carrier.id}"> <div class="d-flex flex-column" {*style="margin-left: 4rem;"*}> <span class="text-dark font-size-md font-weight-medium">{$carrier.name}</span> <span class="text-muted carrier-delay">{$carrier.delay}</span> </div> <span class="text-accent font-size-md"> {if !$display_taxe_label} {str_replace("TTC", "HT", $carrier.price)} {else} {$carrier.price} {/if} </span> </label> </div> {if $carrier.extraContent} <div class="carrier-extra-content js-carrier-extra-content" {if $delivery_option != $carrier_id}style="display: none;"{/if}> {$carrier.extraContent nofilter} </div> {/if} </div> {/foreach} </div> {/block} {block name='order_options'} <div class="order-options mb-4"> {if $gift.allowed} <div style="display: inline-flex;"> <div class="mr-3"><i style="font-size: 1.6rem !important;" class="czi-gift"></i></div> <div class="custom-control custom-checkbox"> <input class="custom-control-input js-gift-checkbox" type="checkbox" name="gift" id="input_gift" value="1" {if $gift.isGift}checked{/if}> <label class="custom-control-label" for="input_gift">Emballage cadeau <span style="font-size: .8rem;">(+ 2.40€ ){*$gift.label*}</span></label> <span style="font-size: .75rem;color: #777; display: inline-flex;">Vos articles seront emballés séparément</span> </div> <div class="{*collapse pt-1 pb-3*}{if $gift.isGift} {*show*}{/if}" id="gift"> <textarea class="form-control hidden" name="gift_message" id="gift_message" placeholder="{l s='Add a note to the gift' d='Shop.Theme.Checkout'}" rows="2">{$gift.message}</textarea> </div> </div> {/if} {if $recyclablePackAllowed} <div class="custom-control custom-checkbox"> <input class="custom-control-input" type="checkbox" name="recyclable" id="input_recyclable" value="1" {if $recyclable}checked{/if}> <label class="custom-control-label" for="input_recyclable">{l s='I would like to receive my order in recycled packaging.' d='Shop.Theme.Checkout'}</label> </div> {/if} <textarea class="form-control" name="delivery_message" id="delivery_message" placeholder="{l s='Add a comment about your order' d='Shop.Theme.Checkout'}" rows="2">{$delivery_message}</textarea> </div> {/block} <button class="continue btn btn-primary" type="submit" name="confirmDeliveryOption" value="1">Valider la livraison{*l s='Continue' d='Shop.Theme.Actions'*}</button> </form> {else} <p class="alert alert-danger">{l s='Unfortunately, there are no carriers available for your delivery address.' d='Shop.Theme.Checkout'}</p> {/if} </div> <div id="hook-display-after-carrier"> {$hookDisplayAfterCarrier nofilter} </div> <div id="extra_carrier"></div> Link to comment Share on other sites More sharing options...
Eolia Posted November 24, 2022 Share Posted November 24, 2022 Donc comme ça, ça devrait le faire! <div class="delivery-options-list"> {if $delivery_options|count} <form id="js-delivery" method="post" data-url-update="{url entity='order' params=['ajax' => 1, 'action' => 'selectDeliveryOption']}"> {block name='delivery_options'} {assign var="order-1" value="0"} {assign var="order-2" value="0"} <div class="delivery-options mb-4 row"> {foreach from=$delivery_options item=carrier key=carrier_id} {if $order-1 == 0 && in_array($carrier.id, array(282, 283, 284))} <div class='order-1">Mes infos pour chaque transporteurs point relais</div> {assign var="order-1" value="1"} {/if} {if $order-2 == 0 && in_array($carrier.id, array(233, 270, 277))} <div class='order-2">Mes infos pour chaque transporteurs domicile</div> {assign var="order-2" value="1"} {/if} <div class="delivery-option pb-2 mb-2 border-bottom" style="width: 100%;padding-left: 15px;"> <div class="custom-control custom-radio"> <input class="custom-control-input" type="radio" name="delivery_option[{$id_address}]" id="delivery_option_{$carrier.id}" value="{$carrier_id}" {if $delivery_option == $carrier_id}checked{/if}> <label class="custom-control-label d-block d-sm-flex justify-content-between align-items-center" for="delivery_option_{$carrier.id}"> <div class="d-flex flex-column" {*style="margin-left: 4rem;"*}> <span class="text-dark font-size-md font-weight-medium">{$carrier.name}</span> <span class="text-muted carrier-delay">{$carrier.delay}</span> </div> <span class="text-accent font-size-md"> {if !$display_taxe_label} {str_replace("TTC", "HT", $carrier.price)} {else} {$carrier.price} {/if} </span> </label> </div> {if $carrier.extraContent} <div class="carrier-extra-content js-carrier-extra-content" {if $delivery_option != $carrier_id}style="display: none;"{/if}> {$carrier.extraContent nofilter} </div> {/if} </div> {/foreach} ... On assigne les 2 variables à 0. Si un des transporteurs voulu existe et que la variable est à 0 on ajoute le titre et on incrémente la variable à 1, sinon on ne fait rien. Link to comment Share on other sites More sharing options...
Manu-41 Posted November 24, 2022 Author Share Posted November 24, 2022 Merci Eolia pour ton aide. J'ai testé, mais rien ne s'affiche. {assign var="order-1" value="0"} {assign var="order-2" value="0"} <div class="delivery-options mb-4 row"> {foreach from=$delivery_options item=carrier key=carrier_id} {if $order-1 == 0 && in_array($carrier.id, array(282, 283, 284))} <div class='order-1">Mes infos pour chaque transporteurs point relais</div> {assign var="order-1" value="1"} {/if} {if $order-2 == 0 && in_array($carrier.id, array(233, 270, 277))} <div class='order-2">Mes infos pour chaque transporteurs domicile</div> {assign var="order-2" value="1"} {/if} Notamment, ça devrait renvoyer la phrase if $order-1 == 0 && in_array($carrier.id, array(282, 283, 284))} <div class='order-1">Mes infos pour chaque transporteurs point relais</div> {assign var="order-1" value="1"} {/if} mais ça n'affiche rien Link to comment Share on other sites More sharing options...
Eolia Posted November 24, 2022 Share Posted November 24, 2022 que donne {$order-1} au début du {foreach} ? Link to comment Share on other sites More sharing options...
Manu-41 Posted November 24, 2022 Author Share Posted November 24, 2022 J'ai remis le fichier d'origine pour tester, Que doit donner le $order-1 ? Je n'ai rien qui s'affiche Link to comment Share on other sites More sharing options...
Eolia Posted November 24, 2022 Share Posted November 24, 2022 il doit donner 0 ou 1 mais si vous avez remis celui d'origine rien ne va s'afficher car cette variable n'existe pas Moi je l'avais assigné avant la boucle, pour démarrer à 0 {assign var="order-1" value="0"} {assign var="order-2" value="0"} Link to comment Share on other sites More sharing options...
Manu-41 Posted November 24, 2022 Author Share Posted November 24, 2022 Il n'y a aucun changement, ni ordre, ni texte. Voici ce que j'ai testé avec le fichier d'origine {if $delivery_options|count} <form id="js-delivery" method="post" data-url-update="{url entity='order' params=['ajax' => 1, 'action' => 'selectDeliveryOption']}"> {block name='delivery_options'} {assign var="order-1" value="0"} {assign var="order-2" value="0"} <div class="delivery-options mb-4 row"> {foreach from=$delivery_options item=carrier key=carrier_id} {if $order-1 == 0 && in_array($carrier.id, array(282, 283, 284, 264))} <div class='order-1">Mes infos pour chaque transporteurs point relais</div> {assign var="order-1" value="1"} {/if} {if $order-2 == 0 && in_array($carrier.id, array(270, 277, 263 , 266))} <div class='order-2">Mes infos pour chaque transporteurs domicile</div> {assign var="order-2" value="1"} {/if} <div class="delivery-option pb-2 mb-2 border-bottom" style="width: 100%;padding-left: 15px;"> <div class="custom-control custom-radio"> <input class="custom-control-input" type="radio" name="delivery_option[{$id_address}]" id="delivery_option_{$carrier.id}" value="{$carrier_id}" {if $delivery_option == $carrier_id}checked{/if}> <label class="custom-control-label d-block d-sm-flex justify-content-between align-items-center" for="delivery_option_{$carrier.id}"> {*<div style="position: absolute;"><img class="hidden" src="{$urls.img_url}ship/{$carrier.id}.jpg" /></div>*} <div class="d-flex flex-column" {*style="margin-left: 4rem;"*}> <span class="text-dark font-size-md font-weight-medium">{$carrier.name}</span> <span class="text-muted carrier-delay">{$carrier.delay}</span> </div> <span class="text-accent font-size-md"> {if !$display_taxe_label} {str_replace("TTC", "HT", $carrier.price)} {else} {$carrier.price} {/if} </span> </label> </div> {if $carrier.extraContent} <div class="carrier-extra-content js-carrier-extra-content" {if $delivery_option != $carrier_id}style="display: none;"{/if}> {$carrier.extraContent nofilter} </div> {/if} </div> {/foreach} et j'ai testé aussi avec le dernier fichier que j'ai fait, celui ou j'ai juste le problème de titre si pas de transporteur dans le groupe {if $delivery_options|count} <form id="js-delivery" method="post" data-url-update="{url entity='order' params=['ajax' => 1, 'action' => 'selectDeliveryOption']}"> {block name='delivery_options'} {assign var="order-1" value="0"} {assign var="order-2" value="0"} <div class="delivery-options mb-4 row"> <div style="width: 100%;background: #f7f7f7;text-align: center;padding-top: 1rem;border-radius: 5px;margin-bottom: 1rem;"><p style="font-weight: 500;"><i class="czi-location pr-2" style="font-size: 1.1rem;color: #e76136;"></i>En point relais</p></div> {foreach from=$delivery_options item=carrier key=carrier_id} {if $order-1 == 0 && in_array($carrier.id, array(282, 283, 284, 264))} <div class='order-1">Mes infos pour chaque transporteurs point relais</div> {assign var="order-1" value="1"} {/if} {if $delivery_option && ($carrier.id == 282 || $carrier.id == 283 || $carrier.id == 284 || $carrier.id == 264)} <div class="delivery-option pb-2 mb-2 border-bottom" style="width: 100%;padding-left: 15px;"> <div class="custom-control custom-radio"> <input class="custom-control-input" type="radio" name="delivery_option[{$id_address}]" id="delivery_option_{$carrier.id}" value="{$carrier_id}" {if $delivery_option == $carrier_id}checked{/if}> <label class="custom-control-label d-block d-sm-flex justify-content-between align-items-center" for="delivery_option_{$carrier.id}"> {*<div style="position: absolute;"><img class="hidden" src="{$urls.img_url}ship/{$carrier.id}.jpg" /></div>*} <div class="d-flex flex-column" {*style="margin-left: 4rem;"*}> <span class="text-dark font-size-md font-weight-medium">{$carrier.name}</span> <span class="text-muted carrier-delay">{$carrier.delay}</span> </div> <span class="text-accent font-size-md"> {if !$display_taxe_label} {str_replace("TTC", "HT", $carrier.price)} {else} {$carrier.price} {/if} </span> </label> </div> {if $carrier.extraContent} <div class="carrier-extra-content js-carrier-extra-content" {if $delivery_option != $carrier_id}style="display: none;"{/if}> {$carrier.extraContent nofilter} </div> {/if} </div> {/if} {/foreach} <div style="width: 100%;background: #f7f7f7;text-align: center;padding-top: 1rem;border-radius: 5px;margin-bottom: 1rem;"><p style="font-weight: 500;"><i class="czi-home pr-2" style="font-size: 1.1rem;color: #e76136;"></i>A domicile</p></div> {foreach from=$delivery_options item=carrier key=carrier_id} {if $order-2 == 0 && in_array($carrier.id, array(263, 270, 277, 266))} <div class='order-2">Mes infos pour chaque transporteurs domicile</div> {assign var="order-2" value="1"} {/if} {if $delivery_option && ($carrier.id == 270 || $carrier.id == 277 || $carrier.id == 263 || $carrier.id == 266)} <div class="delivery-option pb-2 mb-2 border-bottom" style="width: 100%;padding-left: 15px;"> <div class="custom-control custom-radio"> <input class="custom-control-input" type="radio" name="delivery_option[{$id_address}]" id="delivery_option_{$carrier.id}" value="{$carrier_id}" {if $delivery_option == $carrier_id}checked{/if}> <label class="custom-control-label d-block d-sm-flex justify-content-between align-items-center" for="delivery_option_{$carrier.id}"> {*<div style="position: absolute;"><img class="hidden" src="{$urls.img_url}ship/{$carrier.id}.jpg" /></div>*} <div class="d-flex flex-column" {*style="margin-left: 4rem;"*}> <span class="text-dark font-size-md font-weight-medium">{$carrier.name}</span> <span class="text-muted carrier-delay">{$carrier.delay}</span> </div> <span class="text-accent font-size-md"> {if !$display_taxe_label} {str_replace("TTC", "HT", $carrier.price)} {else} {$carrier.price} {/if} </span> </label> </div> {if $carrier.extraContent} <div class="carrier-extra-content js-carrier-extra-content" {if $delivery_option != $carrier_id}style="display: none;"{/if}> {$carrier.extraContent nofilter} </div> {/if} </div> {/if} {/foreach} </div> {/block} mais rien ne change aussi Link to comment Share on other sites More sharing options...
Eolia Posted November 24, 2022 Share Posted November 24, 2022 je ne vois nulle part le {$order-1} au début du {foreach} ? Link to comment Share on other sites More sharing options...
Manu-41 Posted November 24, 2022 Author Share Posted November 24, 2022 {$order-1} seul, il n'y en as pas. J'ai confondu avec {foreach from=$delivery_options item=carrier key=carrier_id} {if $order-1 == 0 && in_array($carrier.id, array(282, 283, 284, 264))} <div class='order-1">Mes infos pour chaque transporteurs point relais</div> {assign var="order-1" value="1"} {/if} {if $order-2 == 0 && in_array($carrier.id, array(270, 277, 263 , 266))} <div class='order-2">Mes infos pour chaque transporteurs domicile</div> {assign var="order-2" value="1"} {/if} Link to comment Share on other sites More sharing options...
Eolia Posted November 24, 2022 Share Posted November 24, 2022 ok, donc vous l'ajoutez comme ceci: {foreach from=$delivery_options item=carrier key=carrier_id} {$order-1} {if $order-1 == 0 && in_array($carrier.id, array(282, 283, 284, 264))} <div class='order-1">Mes infos pour chaque transporteurs point relais</div> {assign var="order-1" value="1"} {/if} {if $order-2 == 0 && in_array($carrier.id, array(270, 277, 263 , 266))} <div class='order-2">Mes infos pour chaque transporteurs domicile</div> {assign var="order-2" value="1"} {/if} Et regardez si quelque chose s'affiche. Normalement vous devriez avoir 0 1 1 1 Link to comment Share on other sites More sharing options...
Manu-41 Posted November 24, 2022 Author Share Posted November 24, 2022 ca affiche -1 sur tous les transporteurs Link to comment Share on other sites More sharing options...
Eolia Posted November 24, 2022 Share Posted November 24, 2022 ok c'est ma faute, je n'aurais pas dû conserver votre nom remplacez order-1 et order-2 par order_1 et order_2 dans mon code. Link to comment Share on other sites More sharing options...
Manu-41 Posted November 24, 2022 Author Share Posted November 24, 2022 Il y a du changement, ça m'a enlevé des transporteurs (relais et domicile) voici ce que j'ai mis : {block name='delivery_options'} {assign var="order_1" value="0"} {assign var="order_2" value="0"} <div class="delivery-options mb-4 row"> {foreach from=$delivery_options item=carrier key=carrier_id} {$order_1} {if $order_1 == 0 && in_array($carrier.id, array(282, 283, 284, 264))} <div class='order-1">Mes infos pour chaque transporteurs point relais</div> {assign var="order_1" value="1"} {/if} {if $order_2 == 0 && in_array($carrier.id, array(270, 277, 263 , 266))} <div class='order-2">Mes infos pour chaque transporteurs domicile</div> {assign var="order-2" value="1"} {/if} <div class="delivery-option pb-2 mb-2 border-bottom" style="width: 100%;padding-left: 15px;"> j'ai dû faire un loupé? Link to comment Share on other sites More sharing options...
Eolia Posted November 24, 2022 Share Posted November 24, 2022 Euh... le code ne fait qu'afficher ou pas les phrases, il ne touche pas aux transporteurs. Cependant, 2 remarques: - Vous avez loupé celui-là: {assign var="order-2" value="1"} - Et si vous modifiez vos transporteurs, les id ne seront plus bon. En général on se base sur l'id_reference du transporteur, qui elle ne change jamais Link to comment Share on other sites More sharing options...
Manu-41 Posted November 25, 2022 Author Share Posted November 25, 2022 Ha, j'ai enfin réussi, ca fonctionne. Tu m'avais demandé le fichier d'origine. Je m'étais donc basé dessus. J'ai repris le fichier que j'ai modifié, et ça fonctionne. Le texte se cache s'il n'y a pas de transporteurs. J'ai aussi regardé pour utiliser l'id_reference du transporteur, mais je ne trouve pas d'informations à ce sujet. C'est pour cela que j'ai utilisé les id Merci pour ton aide, toujours précieuse ! Link to comment Share on other sites More sharing options...
Eolia Posted November 25, 2022 Share Posted November 25, 2022 Lorsqu'un transporteur est créé, sa référence = son id A chaque fois qu'il est modifié, Prestashop le passe en "deleted" et le copie dans un nouveau, pour conserver la cohérence de commandes qui auraient utilisé le transporteur dans sa version précédente. Par contre sa référence reste la même. Link to comment Share on other sites More sharing options...
Manu-41 Posted November 25, 2022 Author Share Posted November 25, 2022 Si je comprends, je ne dois pas utiliser id_carrier, mais id_reference ? Link to comment Share on other sites More sharing options...
Eolia Posted November 25, 2022 Share Posted November 25, 2022 oui, si Prestashop l'a à cet endroit (je crois que oui) Link to comment Share on other sites More sharing options...
Manu-41 Posted November 29, 2022 Author Share Posted November 29, 2022 (edited) Je ne trouve pas l'id_reference via le mode debug. Y a-t-il un variable ? Car en effet, ça devient ingérable dès que je modifie le transporteur ;-( Edited November 29, 2022 by Manu-41 (see edit history) Link to comment Share on other sites More sharing options...
Mediacom87 Posted November 29, 2022 Share Posted November 29, 2022 Pas en mode debug mais dans la base de données directement. Link to comment Share on other sites More sharing options...
Eolia Posted November 29, 2022 Share Posted November 29, 2022 Link to comment Share on other sites More sharing options...
Manu-41 Posted November 30, 2022 Author Share Posted November 30, 2022 J'ai réussi à retrouver les id références carrier et les lister. J'ai testé avec une ligne {if $delivery_option && ($carrier.id_reference == 229 || $carrier.id == 247|| $carrier.id == 250|| $carrier.id == 249)} 123 {/if} Il doit avoir un souci quelque part, car ça m'affiche qu'un seul transporteur ayant l'id référence 229. Une idée ? Link to comment Share on other sites More sharing options...
Eolia Posted November 30, 2022 Share Posted November 30, 2022 Prestashop ne vous renvoie ici que les transporteurs ACTIFS La référence étant unique il ne peut y avoir qu'un seul transporteur avec cet id_reference 229 ici Link to comment Share on other sites More sharing options...
Manu-41 Posted November 30, 2022 Author Share Posted November 30, 2022 Je viens de voir ma bêtise, RRR je retente 😉 Link to comment Share on other sites More sharing options...
Manu-41 Posted November 30, 2022 Author Share Posted November 30, 2022 C'est bon, ça fonctionne à merveille ! Merci encore à Eolia et Mediacom 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