Jump to content

Amélioration du code smarty pour homefeatured.tpl


Recommended Posts

Bonjour,

 

Dans le template des produits phares (homefeatured.tpl) le code smarty utilisé pour l'ajout de la classe "last_line" au tag "li" des produits ne fonctionne pas correctement lorsque le nombre de produits affichés est un multiple exact du nombre de produits par ligne.

 

En effet, le code présent dans le .tpl par défaut est:

...

{foreach from=$products item=product name=blocknewproductsProducts}
<li class="ajax_block_product {if $smarty.foreach.blocknewproductsProducts.first}first_item{elseif $smarty.foreach.blocknewproductsProducts.last}last_item{else}item{/if} {if $smarty.foreach.blocknewproductsProducts.iteration%$nbItemsPerLine == 0}last_item_of_line{elseif $smarty.foreach.blocknewproductsProducts.iteration%$nbItemsPerLine == 1} {/if} {if $smarty.foreach.blocknewproductsProducts.iteration > ($smarty.foreach.blocknewproductsProducts.total - ($smarty.foreach.blocknewproductsProducts.total % $nbItemsPerLine))}last_line{/if}">
...

 

Or, dans la condition

{if $smarty.foreach.blocknewproductsProducts.iteration > ($smarty.foreach.blocknewproductsProducts.total - ($smarty.foreach.blocknewproductsProducts.total % $nbItemsPerLine))}

le modulo (%) du total de produits par le nombre de produits par ligne retourne 0 (zéro) lorsque ce total est un multiple exact du nombre de produits par ligne. Dans ce cas la condition vérifie donc que

itération > total - 0

qui n'est forcément jamais vérifiée...

 

Il faut donc, dans ce cas particulier, retirer le nombre de produits par ligne du total pour déterminer les itérations correspondantes à la dernière ligne. Je propose le code suivant pour résoudre ce problème:

 

...

{foreach from=$products item=product name=homeFeaturedProducts}
{math equation="(total%perLine)" total=$smarty.foreach.homeFeaturedProducts.total perLine=$nbItemsPerLine assign=totModulo}
{if $totModulo == 0}{assign var='totModulo' value=$nbItemsPerLine}{/if}
<li class="ajax_block_product {if $smarty.foreach.homeFeaturedProducts.first}first_item{elseif $smarty.foreach.homeFeaturedProducts.last}last_item{else}item{/if} {if $smarty.foreach.homeFeaturedProducts.iteration%$nbItemsPerLine == 0}last_item_of_line{elseif $smarty.foreach.homeFeaturedProducts.iteration%$nbItemsPerLine == 1} {/if} {if $smarty.foreach.homeFeaturedProducts.iteration > ($smarty.foreach.homeFeaturedProducts.total - $totModulo)}last_line{/if}">
...

 

En espérant que cela pourra en aider certains...

 

Bien à vous.

 

Thibaut

Share this post


Link to post
Share on other sites

Bonjour,

 

Si cela résout un soucis avec ce module livré par PrestaShop, il serait bien de proposer un "patch" sur la Forge en ajoutant un "Improvement" :) Comme ça, le module pourrait être nativement corrigé par les dev de la Team Presta.

Share this post


Link to post
Share on other sites

Bonjour,

 

Sur votre conseil j'ai rempli un (court) rapport dans le système de tracking...

 

http://forge.prestashop.com/browse/PNM-288

 

Un petit détail que je n'ai pas saisi dans le procédé d'enregistrement du "bug" est que je n'ai pas réussi à le qualifié en "Improvement" (il est en "New Feature") et sa priorité est minimale... Il ne me semble pas pouvoir modifier l'élément une fois qu'il est soumis !?

Rien de bien grave ceci dit.

Share this post


Link to post
Share on other sites

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
 Share

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More