Hotfirenet Posted March 23, 2017 Share Posted March 23, 2017 (edited) Bonjour tout le monde, ça va faire quelques heures que je bute sur le problème. L'idée c'est de faire un compteur pour ajouter une colonne dans les features a un certain moment, voici le code: {if isset($features) && $features && $logged} <!-- Data sheet --> <section class="page-product-box"> <h3 class="page-product-heading">{l s='Data sheet'}</h3> <table class="table-data-sheet"> {assign var="iFeatures" value=0} {foreach from=$features item=feature} <tr class="{cycle values="odd,even"}"> {if isset($feature.value)} <td>{$feature.name|escape:'html':'UTF-8'}</td> {if $feature.id_feature == 2 || $feature.id_feature == 3 || $feature.id_feature == 4 || $feature.id_feature == 30} <td>{$feature.value|floatval} {if $feature.id_feature == 2 || $feature.id_feature == 3 || $feature.id_feature == 30} cm {else} kg {/if}</td> {if $iFeatures == 0} <td rowspan="4"><strong>{l s='Packaging size'}</strong></td> {/if} {else} <td colspan="2">{$feature.value|escape:'html':'UTF-8'}</td> {/if} {$iFeatures = $iFeatures +1} {/if} </tr> {/foreach} </table> </section> <!--end Data sheet --> {/if} ce qui doit donner: Sauf que sur certain produit le code ne passe. pourtant je remplie bien mes conditions, j'avoue que la je me tire les cheveux ... Ps, cache vidé, la variable est bien de type int testé avec {iFeatures|var_dump} Merci de votre attention ++ Johan Edited March 24, 2017 by Hotfirenet (see edit history) Link to comment Share on other sites More sharing options...
Atch Posted March 24, 2017 Share Posted March 24, 2017 Bonjour, Je ne suis pas dev modules, mais parfois vaut mieux se diriger vers un module de ce genre https://addons.prestashop.com/fr/onglet-produit/21368-full-features-groups.html, qui te fera gagner du temps et de l'argent au final ...V++ Atch Link to comment Share on other sites More sharing options...
Hotfirenet Posted March 24, 2017 Author Share Posted March 24, 2017 Bonjour, Je ne suis pas dev modules, mais parfois vaut mieux se diriger vers un module de ce genre https://addons.prestashop.com/fr/onglet-produit/21368-full-features-groups.html, qui te fera gagner du temps et de l'argent au final ... V++ Atch Ce n'est pas une grosse perte de temps, le code parait correct, je pense plus a un problème avec smarty. Mais merci Link to comment Share on other sites More sharing options...
Nowis Posted March 24, 2017 Share Posted March 24, 2017 Quand tu dis que ça passe pas, ça fait quoi exactement ? (capture si possible) Link to comment Share on other sites More sharing options...
Hotfirenet Posted March 24, 2017 Author Share Posted March 24, 2017 Salut @Nowis, merci tu as un screen dans le premier post qui représente le fonctionnement voulu, je n'ai pas fait de screen du mode normal car c'est le rendu natif de presta. Link to comment Share on other sites More sharing options...
Atch Posted March 24, 2017 Share Posted March 24, 2017 Ce n'est pas une grosse perte de temps, le code parait correct, je pense plus a un problème avec smarty. Mais merci je disais ça par rapport à : Bonjour tout le monde, ça va faire quelques heures que je bute sur le problème. sachant qu'une heure de dev est > à 50€ V++ Atch Link to comment Share on other sites More sharing options...
Nowis Posted March 24, 2017 Share Posted March 24, 2017 Salut @Nowis, merci tu as un screen dans le premier post qui représente le fonctionnement voulu, je n'ai pas fait de screen du mode normal car c'est le rendu natif de presta. Ton screen n'est a priori pas correct par rapport au code : <td>{$feature.id_feature} - {$feature.name|escape:'html':'UTF-8'}</td> L'id n'est pas affiché sur la capture. C'est pourquoi pour t'aider il serait préférable d'avoir une capture d'un produit qui fonctionne, et d'un autre qui ne fonctionne pas. Sinon ça va être compliqué d'analyser. Link to comment Share on other sites More sharing options...
Hotfirenet Posted March 24, 2017 Author Share Posted March 24, 2017 Ton screen n'est a priori pas correct par rapport au code : <td>{$feature.id_feature} - {$feature.name|escape:'html':'UTF-8'}</td> L'id n'est pas affiché sur la capture. C'est pourquoi pour t'aider il serait préférable d'avoir une capture d'un produit qui fonctionne, et d'un autre qui ne fonctionne pas. Sinon ça va être compliqué d'analyser. bien vu c'etait juste un test de ma part pour verifier la valeur des id, je viens de modifier le code, mais ca ne joue en rien sur le fonctionnement de la boucle c'etait juste une notion d'affichage? Merci Link to comment Share on other sites More sharing options...
Atch Posted March 24, 2017 Share Posted March 24, 2017 J'utilise une boucle dans ce style sur un de mes projets, et cela fonctionne... juste : {$iFeatures = ($iFeatures + 1)} au lieu de {$iFeatures = $iFeatures +1} T'as essayé en plaçant l'incrémentation juste avant {/foreach} V++ Atch Link to comment Share on other sites More sharing options...
Hotfirenet Posted March 24, 2017 Author Share Posted March 24, 2017 nop ca ne change rien, je ne comprends vraiment pas la merde ?? {if isset($features) && $features && $logged} <!-- Data sheet --> <section class="page-product-box"> <h3 class="page-product-heading">{l s='Data sheet'}</h3> <table class="table-data-sheet"> {assign var="iFeatures" value=0} {foreach from=$features item=feature} <tr class="{cycle values="odd,even"}"> {if isset($feature.value)} <td>{$feature.name|escape:'html':'UTF-8'}</td> {if $feature.id_feature == 2 || $feature.id_feature == 3 || $feature.id_feature == 4 || $feature.id_feature == 30} <td>{$feature.value|floatval} {if $feature.id_feature == 2 || $feature.id_feature == 3 || $feature.id_feature == 30} cm {else} kg {/if}</td> {if $iFeatures == 0} <td rowspan="4"><strong>{l s='Packaging size'}</strong></td> {/if} {else} <td colspan="2">{$feature.value|escape:'html':'UTF-8'}</td> {/if} {/if} </tr> {$iFeatures = ($iFeatures + 1)} {/foreach} </table> </section> <!--end Data sheet --> {/if} Link to comment Share on other sites More sharing options...
Nowis Posted March 24, 2017 Share Posted March 24, 2017 Il t'est possible de fournir un accès FTP et l'URL de ton site en MP pour un coup d'oeil rapide ? Link to comment Share on other sites More sharing options...
Nowis Posted March 24, 2017 Share Posted March 24, 2017 Avec une capture du comportement normal de Presta j'aurais trouvé le soucis plus rapidement. Je suppose que ça ne fonctionne pas quand tes caractéristiques ne sont pas les premières affichés. Voici le code : {if isset($features) && $features && $logged} <!-- Data sheet --> <section class="page-product-box"> <h3 class="page-product-heading">{l s='Data sheet'}</h3> <table class="table-data-sheet"> {assign var="iFeatures" value=0} {foreach from=$features item=feature} <tr class="{cycle values="odd,even"}"> {if isset($feature.value)} <td>{$feature.name|escape:'html':'UTF-8'}</td> {if $feature.id_feature == 2 || $feature.id_feature == 3 || $feature.id_feature == 4 || $feature.id_feature == 30} <td>{$feature.value|floatval} {if $feature.id_feature == 2 || $feature.id_feature == 3 || $feature.id_feature == 30} cm {else} kg {/if}</td> {if $iFeatures == 0} <td rowspan="4"><strong>{l s='Packaging size'}</strong></td> {$iFeatures = ($iFeatures + 1)} {/if} {else} <td colspan="2">{$feature.value|escape:'html':'UTF-8'}</td> {/if} {/if} </tr> {/foreach} </table> </section> <!--end Data sheet --> {/if} 1 Link to comment Share on other sites More sharing options...
J. Danse Posted March 24, 2017 Share Posted March 24, 2017 Bonjour, Le plus simple, ce serait vraiment soit d'utiliser les compteurs Smarty soit de se baser sur l'index du foreach. {counter start=1 assign="count"} {foreach ...} {if $count == 4} {counter start=0 assign="count"} {/if} {counter} {/foreach} {foreach from=$items key=myId item=i name=foo} {if $smarty.foreach.foo.index % 4 == 0} {/if} {/foreach} 2 Link to comment Share on other sites More sharing options...
Hotfirenet Posted March 24, 2017 Author Share Posted March 24, 2017 bien vu @Nowis, merci beaucoup. Je check et je retiens l'astuce @J.Danse Merci a vous Link to comment Share on other sites More sharing options...
Anita Etictop Posted March 28, 2017 Share Posted March 28, 2017 Et en remplaçant {$iFeatures = $iFeatures +1}Par{assign var=iFeatures value=$iFeatures+1}?Anita. 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