THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


Bonjour,

Je souhaite construire une boucle comme suit :

> boucle product category:"1"
    >boucle brand product ="{ID}
     

{loop name="les-brand-produits" type="product" category={$smarty.get.category_id} }
     {loop name="triemarque" type="brand" product="{ID}"}
              <a href="" id="brand-{$ID}" class="tagBrand">{$TITLE}</a>
     {/loop}
{/loop}
      

Afficher les marques reliés aux produits dans une rubrique précise.

Sauf que ce la m'affiche des doublons vu que plusieurs produits on la même marque.

Bien Cordialement,

Offline


Bonjour,

voici trois exemple pour ne pas afficher en doublon les marques :

Exemple 1
{loop name="triemarque" type="brand"}
    {assign var='titleBrand' value=$TITLE}
    {loop name="les-brand-produits" type="product" brand=$ID category={$smarty.get.category_id} limit="1"}
        <a href="" id="brand-{$BRAND_ID}" class="tagBrand">{$titleBrand}</a>
    {/loop}
{/loop}

<hr/>               
Exemple 2
{$listebrands=[]}
{loop name="les-brand-produits" type="product" category={$smarty.get.category_id}}
    {loop name="triemarque" type="brand" product=$ID}
        {if !isset($listebrands[$ID])}
        <a href="" id="brand-{$ID}" class="tagBrand">{$TITLE}</a>
        {$listebrands[$ID]=true}
        {/if}
    {/loop}
{/loop}

         <hr/>                       
Exemple 3
{$brands=[]}
{loop name="les-brand-produits" type="product" category={$smarty.get.category_id}}
    {loop name="triemarque" type="brand" product=$ID}
        {capture 'rowBrand'}
        <a href="" id="brand-{$ID}" class="tagBrand">{$TITLE}</a>
        {/capture}
        {$brands[$ID]=$smarty.capture.rowBrand}
    {/loop}
{/loop}
{foreach from=$brands key=k item=row}
    {$row nofilter}
{/foreach}

Pour cette exemple 3, possibilité de faire $brands[$TITLE] et de rajouter un tri avant le foreach pour avoir la liste dans l'ordre alphabétique.

Bonne journée.

Last edited by CoolWaa (08-02-2016 12:47:11)

Offline


Un autre moyen qui permet de gérer l'ordre avec la boucle "brand", qui s'appuie sur le fait que le paramètre id de la boucle brand peut prendre une liste de valeurs, et que la requête fait un 'IN' avec cette liste, ce qui règle le problème des doublons smile

{$brands = ''}
{loop name="les-brand-produits" type="product" category=1 }
    {$brands = "$brands,$BRAND_ID" }
{/loop}

{loop name="triemarque" type="brand" id=$brands|trim:',' order="manual"}
    <a href="{$URL}" id="brand-{$ID}" class="tagBrand">{$TITLE}</a>
{/loop}

OpenStudio Toulouse

Offline


Merci pour toutes les réponses; j'ai pas mal lu la doc - mais j'ai du louper ce passage ... Doit on se reporter sur "$smarty doc" pour approfondir les boucles Thélia, ou existe il une doc en préparation?

Offline