Messages : 68
Sujets : 8
Inscription : Jan 2016
Réputation :
0
03/04/2017, 11:32:13
(Modification du message : 06/04/2017, 18:02:08 par Brick.)
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 ?
Messages : 8,242
Sujets : 58
Inscription : Dec 2007
Réputation :
0
04/04/2017, 00:21:31
(Modification du message : 04/04/2017, 00:39:13 par Jean le Chauve.)
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}
Messages : 68
Sujets : 8
Inscription : Jan 2016
Réputation :
0
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
Messages : 8,242
Sujets : 58
Inscription : Dec 2007
Réputation :
0
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 .
Ça ne coûte rien de mettre l'entièreté du code du foreach, et ce serait plus facile à comprendre pour moi.
Messages : 68
Sujets : 8
Inscription : Jan 2016
Réputation :
0
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 ?
Messages : 8,242
Sujets : 58
Inscription : Dec 2007
Réputation :
0
05/04/2017, 09:22:28
(Modification du message : 05/04/2017, 09:34:48 par Jean le Chauve.)
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}
Messages : 68
Sujets : 8
Inscription : Jan 2016
Réputation :
0
hum, j'ai encore beaucoup à apprendre 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 ?
Messages : 8,242
Sujets : 58
Inscription : Dec 2007
Réputation :
0
Si c'est pas résolu, non, peut-être qu'AireLibre passera sur ce post, il est le spécialiste de LISE.
Bonne chance.
Messages : 2,487
Sujets : 18
Inscription : Dec 2009
Réputation :
0
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
Messages : 68
Sujets : 8
Inscription : Jan 2016
Réputation :
0
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 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
Messages : 2,487
Sujets : 18
Inscription : Dec 2009
Réputation :
0
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
Messages : 68
Sujets : 8
Inscription : Jan 2016
Réputation :
0
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 !
Messages : 2,487
Sujets : 18
Inscription : Dec 2009
Réputation :
0
Merci - Marque le sujet en [Résolu] que c'est le cas
Messages : 68
Sujets : 8
Inscription : Jan 2016
Réputation :
0
Yes, résolu merci !
|