Forum CMS Made Simple FR

Version complète : [Résolu] LISE et sa pagination
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: 2.1.6
#~ Url du site :
#~ Hébergeur / Soft :
#~ Informations Système :
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~



Bonjour,

J'ai une question concernant LISE,

Quand on est dans le gabarit de sommaire, on a le foreach pour la liste des items.
Ce foreach il parcours tous les items même si on fait une condition pour filtrer les éléments ?

En fait j'ai ça:
Code :
{foreach from=$items item=item}
  {if empty($item->vendu)}
  
  (...)

  {/if}
{/foreach}

Je fais un foreach pour afficher seulement les produits non-vendus (donc disponibles) et je dis sur le paramètre de LISE pagelimit='10'

Dans la liste complète j'ai 3 produits disponibles et 10 produits vendus

Mais le problème c'est que sur le site, ma pagination s'affiche au bout du premier item disponible alors que j'ai limité l'affichage à 10 items par page.

Donc en fait je me dis que dans le foreach tous mes items (qu'ils soient vendus ou dispo) sont comptabilisés.
Par contre dans le DOM de la page j'ai effectivement que 3 items (ceux dispo) mais la pagination s'active quand-même

Est-ce que c'est possible que LISE ne prenne pas en compte ma condition dans le foreach ? Et qu'il active la pagination car il y a effectivement 13 items en tout ?
Je suppose que le code de pagination est dans ton gabarit.
Code :
{foreach from=$items item=item}
  {if empty($item->vendu)}  
     (...)
     {$nonVendu+1}
  {/if}
{/foreach}
{if $nonVendu>9}{codepagination}{/if}
ou encore
Code :
{foreach from=$items item=item}
  {if empty($item->vendu)}  
     (...)
     {counter start=0 assign=nonVendu}
  {/if}
{/foreach}
{if $nonVendu>9}{codepagination}{/if}
Salut Jean et merci,

Je me suis mal exprimé désolé, en fait mon problème ne concerne pas l'affichage de la pagination, j'aimerai faire en sorte d'exclure complètement les items vendus du Foreach.

Je ne sais pas si c'est possible de filtrer directement sur le foreach, car ma condition à l'intérieur ne change rien, LISE fait juste en sorte de ne pas charger les biens vendus dans le DOM, mais le hic c'est que la pagination (à max 10 items) s'active quand-même alors qu'en réalité je n'ai que 3 produits sur le site.

La seule explication que je vois c'est que le foreach prend aussi en compte les produits vendus, malgré ma condition

Merci pour votre aide
C'est ta condition qui n'est pas bonne : {if empty($item->vendu)} voudrait dire {s'il n'y a aucun item de vendu, alors fait (...)} et encore, je suis à peu près certain que ça ne veut rien dire du tout.
Code :
{foreach from=$items item=item}
{if $item->vendu}(rien, laisse vide){else}{code affichage}{/if}
{/foreach}
Ou alors, je n'ai toujours pas compris, et cela m'arrive souvent ces derniers temps Wink.
Ça ne coûte rien de mettre l'entièreté du code du foreach, et ce serait plus facile à comprendre pour moi.
Alors je te l'accorde ma condition n'est pas du tout logique, mais le {if empty($item->vendu)} fait reference à une checkbox dans le BO, c'est pour ça que j'ai mis empty,
simplement pour dire que si la checkbox n'est pas cochée, le produit est disponible et pas encore vendu, donc il faut l'afficher.

Si au contraire la checkbox est cochée, le produit est vendu et ne dois pas s'afficher.

Maintenant dans mon cas, le produit vendu ne s'affiche ni sur le front ni dans le DOM, mais il est quand même comptabilisé dans le foreach car la pagination s'active.

Pour faire simple, je suis persuadé que les items vendus sont comptabilisés alors qu'on est dans le foreach des produits disponibles.

Je suis certainement vraiment un noob :p mais je ne vois pas comment exclure autrement les produits vendus du foreach.

Code :
{if $items|@count > 0}

  {foreach from=$items item=item}

    {if empty($item->vendu)}

      (- après c'est que de la structure html -)

    {/if}

  {/foreach}

{/if}

Est-ce qu'il y a une autre façon de faire ?
Pour vérifier si une condition est remplie, on n'utilise pas empty(), c'est un booléen.
Code :
{foreach from=$items item=item}
{if $item->vendu === FALSE}{code affichage}{/if}
{/foreach}
hum, j'ai encore beaucoup à apprendre Rolleyes merci pour cette info.

J'ai changé ma condition mais le problème persiste et reste le même, je ne comprends pas pourquoi.
Je pense que je vais devoir faire autrement du coup.

Merci pour ton aide Jean, je dois mettre le sujet en résolu dans ce cas de figure ?
Si c'est pas résolu, non, peut-être qu'AireLibre passera sur ce post, il est le spécialiste de LISE.
Bonne chance.
Hello,

il ne faut pas dans ce cas gérer cela dans la vue (le gabarit summary) - c'est dans l'appel du module que ca se passe :

Code :
{LISEModule search_vendu='0'}

... et ce si "vendu" est l'alias du champ contenant l'info vendu / non vendu.

C'est dans l'aide de LISE - toujours commencer par l'aide Wink
Salut AireLibre,

ah oui désolé, je ne connaissais pas ce paramètre de LISE qui m'a l'air fort utile merci !

Je sens qu'on y est presque Smile mais on dirait que mes produits ne se trient toujours pas

Si je met:
Code :
{LISEmodule template_summary="sidebar" orderby="rand" search_vendu='0' category="vente"}
Tous les produits s'affichent (vendus et disponibles)

si je met:
Code :
{LISEmodule template_summary="sidebar" orderby="rand" search_vendu='1' category="vente"}
Là c'est seulement les produits vendus qui s'affichent !

Mais ce que je veux c'est afficher uniquement les produits non-vendus, donc le contraire

Est-ce que je dois mettre autre chose que 0 pour une checkbox ?

J'ai essayé aussi -1 mais ça ne change rien
En effet, il doit y avoir un problème d'interprétation du "0" dans le cas de la checkbox + paramètre "search".

Solution "rapide" : remplacer les checkbox par un groupe de boutons radio ou menu déroulant pour gérer toi-même la valeur du "vendu" et ainsi faciliter la recherche du module.

Sinon aller plus loin dans le code et voir avec le développeur. Pour être rapide, je prendrai la première solution et je tâcherai d'en toucher un mot au dév
Ok super je pense que faire un groupe de boutons radio sera la solution dans ce cas !

Je testerai dès que possible aujourd'hui et reviendrai mettre en résolu ensuite.
Je verrai aussi pour reporter ça au dev du coup effectivement

Merci encore !
Merci - Marque le sujet en [Résolu] que c'est le cas Wink
Yes, résolu Big Grin merci !