NULL dans un critère conditionnel ?=
Bonjour à tous ;
Des documents sont liés à mes articles, et disposent d’un mot-clé indiquant leur "type" (desktop, mobile, tablet).
Je cherche à afficher, par défaut, tous les documents de article, ou uniquement ceux qui répondent à un filtre passé dans l’url &type_visuel=XXX
J’ai donc une boucle qui va chercher tous les documents de l’article puis à l’intérieur, une boucle sur son mot-clé qui me permet de filtrer via un {titre ?= #ENV{type_visuel}}
<BOUCLE_visuals(DOCUMENTS){id_article}>
<BOUCLE_visual_type(MOTS){id_document}{titre ?= #ENV{type_visuel}}>
<div class="project-visual[ project-visual-(#TITRE|strtolower)]">
<img src="[(#FICHIER|url_absolue)]"[ alt="(#_visuals:TITRE|textebrut)"]>
</div>
</BOUCLE_visual_type>
</BOUCLE_visuals>
Si je passe un filtre à l’url, tout se passe bien et seul les documents qui répondent au filtre sont affichés. Mais si je n’ai pas de #ENVtype_visuel, rien ne s’affiche.
Le var_mode=debug me permet de voir que la requête SQL ne renvoi aucun résultat car cible les articles dont le titre est NULL.
Pourtant, le critère {titre ?= ...}
devrait être totalement ignoré puisque je n’ai aucun #ENV{type_visuel}
SELECT mots.type
FROM spip_mots AS <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+bW90czwvY29kZT4="></span>
INNER JOIN spip_mots_liens AS L1 ON ( L1.id_mot = mots.id_mot )
WHERE (L1.id_objet = 4)
AND (L1.objet = 'document')
AND (mots.titre = NULL)
A noter que si je fais un teste avec {type ?= #ENV{type_visuel}}
alors le comportement est le bon (pas de AND (mots.type = NULL)) dans la requête SQL...
Bref, je suis un peu perdu.
Toute idée est bienvenue !