Filtre taille image

Bonjour,

A cette boucle qui fonctionne,

<B_docAuHazard>

[
(#MODELE{sjcycle_legende}{id_article=#ID_ARTICLE})] [(#FICHIER|image_reduire{#GET{largeur},#GET{hauteur}}|inserer_attribut{alt,""})]

Je souhaitais ajouter un filtre pour que les images d’une largeur inférieure à 320px ne s’affichent pas. J’ai donc ajouté le critère {si #LARGEUR|<={320|non}}.

<BOUCLE_docAuHazard(DOCUMENTS mots_liens){distant=non}{extension==jpg|png|gif} {si #LARGEUR|<={320|non}} {par hasard} {0, #GET{nb}}{doublons} >

[
(#MODELE{sjcycle_legende}{id_article=#ID_ARTICLE})] [(#FICHIER|image_reduire{#GET{largeur},#GET{hauteur}}|inserer_attribut{alt,""})]

Mais cela ne fonctionne pas.

debug m’affiche :

SELECT documents.id_document, rand() AS alea, documents.fichier
FROM spip_documents AS `documents`
WHERE (documents.statut = 'publie')
	AND (documents.mode IN ('image','document'))
	AND (documents.taille > 0 OR documents.distant='oui')
	AND (documents.distant = 'non')
	AND (documents.extension REGEXP 'jpg|png|gif')
ORDER BY alea
LIMIT 0,120

donc non seulement cela ne prends pas en compte ce filtre mais cela affiche toutes les images (documents.taille > 0

Comment corriger mon erreur ?

Merci

et avec juste
/{si #LARGEUR|<={320}}
/car je ne vois pas l'intérêt du filtre |non ici

ou alors avec
/{si #LARGEUR|<={320}///|non/}/

Le 25/06/2013 16:56, VivaSpip a écrit :

Bonjour,

A cette boucle qui fonctionne,

<B_docAuHazard>
    <div id="sjcycle_alea">
    <BOUCLE_docAuHazard_doublons(DOCUMENTS mots_liens){distant=non}{mots.id_groupe=2} {doublons} >
                </BOUCLE_docAuHazard_doublons>
                <BOUCLE_docAuHazard(DOCUMENTS mots_liens){distant=non}{extension==jpg|png|gif} {par hasard} {0, #GET{nb}}{doublons} >
    <div class="sjcycle_alea_img">
<BOUCLE_article (ARTICLES) {id_document}>
[<br /><span class="legende">(#MODELE{sjcycle_legende}{id_article=#ID_ARTICLE})</span>]
            <a href="#URL_ARTICLE{#ID_ARTICLE}"></BOUCLE_article>[(#FICHIER|image_reduire{#GET{largeur},#GET{hauteur}}|inserer_attribut{alt,""})</a>]
        </div>
        </BOUCLE_docAuHazard>
</div>
</B_docAuHazard>

Je souhaitais ajouter un filtre pour que les images d'une largeur inférieure à 320px ne s'affichent pas. J'ai donc ajouté le critère {si #LARGEUR|<={320|non}}.

<BOUCLE_docAuHazard(DOCUMENTS mots_liens){distant=non}{extension==jpg|png|gif}/{si #LARGEUR|<={320|non}}/ {par hasard} {0, #GET{nb}}{doublons} >
    <div class="sjcycle_alea_img">
<BOUCLE_article (ARTICLES) {id_document}>
[<br /><span class="legende">(#MODELE{sjcycle_legende}{id_article=#ID_ARTICLE})</span>]
            <a href="#URL_ARTICLE{#ID_ARTICLE}"></BOUCLE_article>[(#FICHIER|image_reduire{#GET{largeur},#GET{hauteur}}|inserer_attribut{alt,""})</a>]

        </div>
        </BOUCLE_docAuHazard>

Mais cela ne fonctionne pas.

debug m'affiche :
SELECT documents.id_document, rand() AS alea, documents.fichier
FROM spip_documents AS `documents`
WHERE (documents.statut = 'publie')
  AND (documents.mode IN ('image','document'))
  AND (documents.taille > 0 OR documents.distant='oui')
  AND (documents.distant = 'non')
  AND (documents.extension REGEXP 'jpg|png|gif')
ORDER BY alea
LIMIT 0,120
donc non seulement cela ne prends pas en compte ce filtre mais cela affiche toutes les images (documents.taille > 0

Comment corriger mon erreur ?

Merci

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Discuter chez rezo.net

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

Merci

Le critère *|{si ...}|* permet de conditionner l'exécution d'une boucle à la condition exprimée en argument dans le critère.
donc si tu mets le "|non" la boucle ne s'exécutera que si l'image n'est pas inférieure ou égale à 320

Donc /{si #LARGEUR|<={320}} /devrait fonctionner
essaie avec /{si //#GET{largeur}|<={320}}/

Sinon, il va falloir attendre que quelqu'un qui sait lire les messages renvoyés par le debug t'indique une autre piste.

Le 25/06/2013 18:24, VivaSpip a écrit :

Merci

    /{si #LARGEUR|<={320}}
    /car je ne vois pas l'intérêt du filtre |non ici

le filtre |non c'était pour dire ne pas afficher si la largeur est inférieure à 320px
./
{si #LARGEUR|<={320}}/ me donne le même résultat de boucle et debug renvoie

|$command['si'] =
014 <http://www.abipro95.com/?var_mode=debug&var_mode_objet=html_422bbc73a4d3e83fd1a2789f4276fdfa_docAuHazard&var_mode_affiche=code#Tfe2f8d39c3785ab464951657d0f859af&gt; // #LARGEUR
015 <http://www.abipro95.com/?var_mode=debug&var_mode_objet=html_422bbc73a4d3e83fd1a2789f4276fdfa_docAuHazard&var_mode_affiche=code#Tfe2f8d39c3785ab464951657d0f859af&gt; interdire_scripts((@$Pile[0]['largeur'] <=
016 <http://www.abipro95.com/?var_mode=debug&var_mode_objet=html_422bbc73a4d3e83fd1a2789f4276fdfa_docAuHazard&var_mode_affiche=code#Tfe2f8d39c3785ab464951657d0f859af&gt; // 3 signes
017 <http://www.abipro95.com/?var_mode=debug&var_mode_objet=html_422bbc73a4d3e83fd1a2789f4276fdfa_docAuHazard&var_mode_affiche=code#Tfe2f8d39c3785ab464951657d0f859af&gt; '320'));|

    ou alors avec
    /{si #LARGEUR|<={320}///|non/}/

Là cela me donne une page blanche. Avec debug, le code donne

|$command['si'] = |
|// #LARGEUR
015 <http://www.abipro95.com/?var_mode=debug&var_mode_objet=html_422bbc73a4d3e83fd1a2789f4276fdfa_docAuHazard&var_mode_affiche=code#T97d8052fb204247e3227945021261fba&gt; interdire_scripts((((@$Pile[0]['largeur'] <=
016 <http://www.abipro95.com/?var_mode=debug&var_mode_objet=html_422bbc73a4d3e83fd1a2789f4276fdfa_docAuHazard&var_mode_affiche=code#T97d8052fb204247e3227945021261fba&gt; // 3 signes
017 <http://www.abipro95.com/?var_mode=debug&var_mode_objet=html_422bbc73a4d3e83fd1a2789f4276fdfa_docAuHazard&var_mode_affiche=code#T97d8052fb204247e3227945021261fba&gt; '320')) ?'' :' '));|

    Le 25/06/2013 16:56, VivaSpip a écrit :

    Bonjour,

    A cette boucle qui fonctionne,

    <B_docAuHazard>
        <div id="sjcycle_alea">
    <BOUCLE_docAuHazard_doublons(DOCUMENTS
    mots_liens){distant=non}{mots.id_groupe=2} {doublons} >
    </BOUCLE_docAuHazard_doublons>
    <BOUCLE_docAuHazard(DOCUMENTS
    mots_liens){distant=non}{extension==jpg|png|gif} {par hasard} {0,
    #GET{nb}}{doublons} >
        <div class="sjcycle_alea_img">
    <BOUCLE_article (ARTICLES) {id_document}>
    [<br /><span
    class="legende">(#MODELE{sjcycle_legende}{id_article=#ID_ARTICLE})</span>]
                <a
    href="#URL_ARTICLE{#ID_ARTICLE}"></BOUCLE_article>[(#FICHIER|image_reduire{#GET{largeur},#GET{hauteur}}|inserer_attribut{alt,""})</a>]
            </div>
            </BOUCLE_docAuHazard>
    </div>
    </B_docAuHazard>

    Je souhaitais ajouter un filtre pour que les images d'une largeur
    inférieure à 320px ne s'affichent pas. J'ai donc ajouté le
    critère {si #LARGEUR|<={320|non}}.

    <BOUCLE_docAuHazard(DOCUMENTS
    mots_liens){distant=non}{extension==jpg|png|gif}/{si
    #LARGEUR|<={320|non}}/ {par hasard} {0, #GET{nb}}{doublons} >
        <div class="sjcycle_alea_img">
    <BOUCLE_article (ARTICLES) {id_document}>
    [<br /><span
    class="legende">(#MODELE{sjcycle_legende}{id_article=#ID_ARTICLE})</span>]
                <a
    href="#URL_ARTICLE{#ID_ARTICLE}"></BOUCLE_article>[(#FICHIER|image_reduire{#GET{largeur},#GET{hauteur}}|inserer_attribut{alt,""})</a>]

            </div>
            </BOUCLE_docAuHazard>

    Mais cela ne fonctionne pas.

    debug m'affiche :
    SELECT documents.id_document, rand() AS alea, documents.fichier
    FROM spip_documents AS `documents`
    WHERE (documents.statut = 'publie')
      AND (documents.mode IN ('image','document'))
      AND (documents.taille > 0 OR documents.distant='oui')
      AND (documents.distant = 'non')
      AND (documents.extension REGEXP 'jpg|png|gif')
    ORDER BY alea
    LIMIT 0,120
    donc non seulement cela ne prends pas en compte ce filtre mais cela affiche toutes les images (documents.taille > 0

    Comment corriger mon erreur ?

    Merci

    _______________________________________________
    liste spip
    spip@rezo.net <mailto:spip@rezo.net> - désabonnement : envoyer un mail àspip-off@rezo.net <mailto:spip-off@rezo.net>

    Infos et archives :http://listes.rezo.net/mailman/listinfo/spip
    Discuter chez rezo.net

    Documentation de SPIP :http://www.spip.net/

    Irc : de l'aide à toute heure :http://spip.net/irc

    _______________________________________________
    liste spip
    spip@rezo.net <mailto:spip@rezo.net> - désabonnement : envoyer un
    mail à spip-off@rezo.net <mailto:spip-off@rezo.net>

    Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
    Discuter chez rezo.net

    Documentation de SPIP : http://www.spip.net/

    Irc : de l'aide à toute heure : http://spip.net/irc

{si #GET{largeur}|<={320}} me donne une page blanche et debug indique:

$command['si'][] =
[014](http://www.abipro95.com/?var_mode=debug&var_mode_objet=html_422bbc73a4d3e83fd1a2789f4276fdfa_docAuHazard&var_mode_affiche=code#T01dcd94dab8e888e33736e259b70cd97) // #GET
[015](http://www.abipro95.com/?var_mode=debug&var_mode_objet=html_422bbc73a4d3e83fd1a2789f4276fdfa_docAuHazard&var_mode_affiche=code#T01dcd94dab8e888e33736e259b70cd97) (table_valeur($Pile["vars"], (string)
[016](http://www.abipro95.com/?var_mode=debug&var_mode_objet=html_422bbc73a4d3e83fd1a2789f4276fdfa_docAuHazard&var_mode_affiche=code#T01dcd94dab8e888e33736e259b70cd97) // 7 signes
[017](http://www.abipro95.com/?var_mode=debug&var_mode_objet=html_422bbc73a4d3e83fd1a2789f4276fdfa_docAuHazard&var_mode_affiche=code#T01dcd94dab8e888e33736e259b70cd97) 'largeur', null) <=
[018](http://www.abipro95.com/?var_mode=debug&var_mode_objet=html_422bbc73a4d3e83fd1a2789f4276fdfa_docAuHazard&var_mode_affiche=code#T01dcd94dab8e888e33736e259b70cd97) // 3 signes
[019](http://www.abipro95.com/?var_mode=debug&var_mode_objet=html_422bbc73a4d3e83fd1a2789f4276fdfa_docAuHazard&var_mode_affiche=code#T01dcd94dab8e888e33736e259b70cd97) '320');

Le 25/06/13 19:09, VivaSpip a écrit :

*{si **#GET{largeur}|<={320}} *me donne une page blanche et debug indique:

pourquoi se compliquer la vie ?
{largeur > 320} est suffisant non ?
puisque largeur est un champ de la table spip_documents
et est renseigné avec la valeur en pixel...

Le 25/06/2013 16:56, VivaSpip a écrit :

Bonjour,

A cette boucle qui fonctionne,

<B_docAuHazard>
     <div id="sjcycle_alea">
     <BOUCLE_docAuHazard_doublons(DOCUMENTS
mots_liens){distant=non}{mots.id_groupe=2} {doublons} >
                 </BOUCLE_docAuHazard_doublons>
                 <BOUCLE_docAuHazard(DOCUMENTS
mots_liens){distant=non}{extension==jpg|png|gif} {par hasard} {0,
#GET{nb}}{doublons} >
     <div class="sjcycle_alea_img">
<BOUCLE_article (ARTICLES) {id_document}>
[<br /><span
class="legende">(#MODELE{sjcycle_legende}{id_article=#ID_ARTICLE})</span>]
             <a
href="#URL_ARTICLE{#ID_ARTICLE}"></BOUCLE_article>[(#FICHIER|image_reduire{#GET{largeur},#GET{hauteur}}|inserer_attribut{alt,""})</a>]
         </div>
         </BOUCLE_docAuHazard>
</div>
</B_docAuHazard>

Je souhaitais ajouter un filtre pour que les images d'une largeur
inférieure à 320px ne s'affichent pas. J'ai donc ajouté le critère {si
#LARGEUR|<={320|non}}.

<BOUCLE_docAuHazard(DOCUMENTS
mots_liens){distant=non}{extension==jpg|png|gif}/{si
#LARGEUR|<={320|non}}/ {par hasard} {0, #GET{nb}}{doublons} >
     <div class="sjcycle_alea_img">
<BOUCLE_article (ARTICLES) {id_document}>
[<br /><span
class="legende">(#MODELE{sjcycle_legende}{id_article=#ID_ARTICLE})</span>]
             <a
href="#URL_ARTICLE{#ID_ARTICLE}"></BOUCLE_article>[(#FICHIER|image_reduire{#GET{largeur},#GET{hauteur}}|inserer_attribut{alt,""})</a>]

         </div>
         </BOUCLE_docAuHazard>

Mais cela ne fonctionne pas.

debug m'affiche :

SELECT documents.id_document, rand() AS alea, documents.fichier
FROM spip_documents AS `documents`
WHERE (documents.statut = 'publie')
  AND (documents.mode IN ('image','document'))
  AND (documents.taille > 0 OR documents.distant='oui')
  AND (documents.distant = 'non')
  AND (documents.extension REGEXP 'jpg|png|gif')
ORDER BY alea
LIMIT 0,120

donc non seulement cela ne prends pas en compte ce filtre mais cela affiche toutes les images (documents.taille > 0

Comment corriger mon erreur ?

Merci

Bonsoir,

Essaie plutôt {largeur>320}

Si ça ne marche pas non plus, il faudra utiliser une autre boucle conditionnelle à l'intérieur de la boucle "DocAuHazard" :
<BOUCLE_cond(CONDITION){si #LARGEUR > 320}>

Oui, en effet, pourquoi faire simple ?

Merci

Merci, en effet, cela fonctionne parfaitement.

Le 25/06/2013 21:32, VivaSpip a écrit :

Merci, en effet, cela fonctionne parfaitement.

Oups, DenisB avait déjà donné la bonne réponse avec les explications qui vont bien !...

Enfin oui, pour résumer, on peut utiliser un critère du genre {#BALISE = xxx} uniquement si la #BALISE provient d'une autre boucle.
Dans le cas contraire, comme l'a expliqué DenisB, on écrit {balise = xxx}