encore une boucle conditionnelle à la c..

Bonjour,

Bon... manifestement j'ai beaucoup de mal à me faire au côté
conditionnel de certaines boucles. Sans être un foudre de guerre en
php, j'aurais je pense déjà pu coder ça mais en MacroSpip, ca a l'air
d'une autre paire de manche.

Je m'explique :

avec les mots clef, je donne aux rédacteurs la posiibilité de choisir
le mode d'affichage de leur article (en bloc ou en colonnes)

Je créé donc un groupe de mots "_format_article" configuré en
'articles', 'recommandé', 'un seul mot dans ce groupe'.

et je me tente sur une boucle parfaitement capilo-tractée inspiré de
ce que je viens de lire ici et là, entre chez Blip, Romy et cette
liste (je sens d'ailleurs que certains ont des besoins approchants
mais impossible pour moi d'adapter vos soluces à mon problème).

#ENV, #SET #GET me paraissent ici hors de propos (quoique...), en gros
ce qui m'intéresserait aujourd'hui c'est que mon article.html, si le
titre_mot=bloc m'affiche ceci :
[<div class="#EDIT{texte} texte">(#TEXTE|image_reduire{400,0})</div>]

sinon (ou plutôt, "si le titre_mot=colonnes") alors on affiche plutôt
ceci :
[<div class="#EDIT{texte} texte">(#TEXTE*|afficher_en_colonnes|propre|
image_reduire{350,0})</div>]

Je suis dessus depuis une durée totale de 17heures et des poussières,
j'ai les yeux explosés, j'ai pas dormis et je ne trouve toujours pas.

Quelqu'un aurait-il une idée s'il vous plait ?

Signé "mes neuronnes endoloris, reconnaissants..."

#ENV, #SET #GET me paraissent ici hors de propos (quoique...), en gros
ce qui m'intéresserait aujourd'hui c'est que mon article.html, si le
titre_mot=bloc m'affiche ceci :
[<div class="#EDIT{texte} texte">(#TEXTE|image_reduire{400,0})</div>]

sinon (ou plutôt, "si le titre_mot=colonnes") alors on affiche plutôt
ceci :
[<div class="#EDIT{texte} texte">(#TEXTE*|afficher_en_colonnes|propre|
image_reduire{350,0})</div>]

  

<BOUCLE_article(ARTICLES){id_article}>

<BOUCLE_presentation(MOTS){id_article}{type=_format_article}>
[(#TITRE|?=={‹ bloc ›}|{’ ‹ , ›‹ })
[

(#_article:TEXTE|image_reduire{400,0})
]
]
[(#TITRE|?=={‹ colonnes ›}|{ › ‹ , ›'})

[<div class="#_article:EDIT{texte} texte">(#_article:TEXTE*|afficher_en_colonnes|propre|
image_reduire{350,0})</div>]

]
  

</BOUCLE_presentation>

</BOUCLE_article>

Voila le principe pas testé et fait en 4 minutes…
je ne sais pas si le #EDIT des crayons fonctionnera avec cette syntaxe mais je ne vois pas pourquoi ca ne le ferai pas

Merci Yoann, seulement, ta boucle me renvoit une erreur squelettes
"filtre ?== non définis"

Je viens de tenter une nouvelle parade en revoyant un peu ma requète
de manière à faire passer ca dans un {'sioui','sinon'}

<BOUCLE_presentation(MOTS){id_article}{type=_format_article}>
  [(#TITRE|=={colonnes}|?{'[<div class="#_article:EDIT{texte}
texte">(#_article:TEXTE*|afficher_en_colonnes|propre|
image_reduire{350,0})</div>]','[<div class="#_article:EDIT{texte}
texte">(#_article:TEXTE|image_reduire{400,0})</div>]'})]
</BOUCLE_presentation>

Mais sans plus de succès.

Là je suis trop mort, je crois que je verrai ca demain.

En tout cas, je note que ca fait quand même 2 ou 3 fois que tu me
lances sur des pistes sympas, tu vas finir par me coûter cher en apéro
toi le jour où on se rencontrera ! :smiley:

En tout cas merci pour le coup de pouce,

Etienne.

PS : Je connaissais pas cet astuce du #_article en plein milieux d'une
autre boucle, c'est puissant ça, ça ouvre de sperspectives.
Je crois que c'est pour ça que j'adore Spip : parce que j'en découvre
et en apprends encore tous les jours ! :slight_smile:

On 15 jan, 16:36, "Yoann NOGUES (zerax)" <ml-yo...@advisio-com.fr>
wrote:

> #ENV, #SET #GET me paraissent ici hors de propos (quoique...), en gros
> ce qui m'intéresserait aujourd'hui c'est que mon article.html, si le
> titre_mot=bloc m'affiche ceci :
> [<div class="#EDIT{texte} texte">(#TEXTE|image_reduire{400,0})</div>]

> sinon (ou plutôt, "si le titre_mot=colonnes") alors on affiche plutôt
> ceci :
> [<div class="#EDIT{texte} texte">(#TEXTE*|afficher_en_colonnes|propre|
> image_reduire{350,0})</div>]

<BOUCLE_article(ARTICLES){id_article}>

    <BOUCLE_presentation(MOTS){id_article}{type=_format_article}>
    [(#TITRE|?=={'bloc'}|{' ',''})
        [<div class="#_article:EDIT{texte}
    texte">(#_article:TEXTE|image_reduire{400,0})</div>]
    ]
    [(#TITRE|?=={'colonnes'}|{' ',''})

    [<div class="#_article:EDIT{texte} texte">(#_article:TEXTE*|afficher_en_colonnes|propre|
    image_reduire{350,0})</div>]

    ]

    </BOUCLE_presentation>

</BOUCLE_article>

Voila le principe pas testé et fait en 4 minutes...
je ne sais pas si le #EDIT des crayons fonctionnera avec cette syntaxe
mais je ne vois pas pourquoi ca ne le ferai pas

_______________________________________________
liste spip
s...@rezo.net - désabonnement : spip-...@rezo.net
Infos et archives :http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP :http://www.spip.net/
irc://irc.freenode.net/spip
FAQ :FAQ webmestre - SPIP

oiseau2nuit (Zzz. dans un passé lointain…) a écrit :

Merci Yoann, seulement, ta boucle me renvoit une erreur squelettes
"filtre ?== non définis"
  

simplement parce que je me suis planté dans la syntaxe du filtre sioui, sinon
ca devrait être mieux ca

<BOUCLE_article(ARTICLES){id_article}>

    <BOUCLE_presentation(MOTS){id_article}{type=_format_article}>
    [(#TITRE|=={'bloc'}|?{' ',''})
        [<div class="#_article:EDIT{texte}
    texte">(#_article:TEXTE|image_reduire{400,0})</div>]
    ]
    [(#TITRE|=={'colonnes'}|?{' ',''})

    [<div class="#_article:EDIT{texte} texte">(#_article:TEXTE*
    image_reduire{350,0})</div>]

    ]

    </BOUCLE_presentation>

</BOUCLE_article>

Salut !

Loiseau2nuit (Zzz. dans un passé lointain...) wrote:

ce qui m'intéresserait aujourd'hui c'est que mon article.html, si le
titre_mot=bloc m'affiche ceci :
[<div class="#EDIT{texte} texte">(#TEXTE|image_reduire{400,0})</div>]

sinon (ou plutôt, "si le titre_mot=colonnes") alors on affiche plutôt
ceci :
[<div class="#EDIT{texte} texte">(#TEXTE*|afficher_en_colonnes|propre|
image_reduire{350,0})</div>]

Et quelque chose comme:
------------->8------------
<BOUCLE_Test_de_bloc-col(MOTS){type=_format_article}{titre_mot=bloc}>
        [<div class="#EDIT{texte} texte">(#TEXTE|image_reduire{400,0})</div>]
</BOUCLE_Test_de_bloc-col>
</B_Test_de_bloc-col>
        [<div class="#EDIT{texte} texte">(#TEXTE*|afficher_en_colonnes|propre|

image_reduire{350,0})</div>]

<//B_Test_de_bloc-col>
-----------8<-------------

tu as essayé ?

On peut aussi affiner avec:
---------------->8-------------
<BOUCLE_Test_de_bloc-col(MOTS){type=_format_article}{titre_mot=bloc}>
        [<div class="#EDIT{texte} texte">(#TEXTE|image_reduire{400,0})</div>]
</BOUCLE_Test_de_bloc-col>
</B_Test_de_bloc-col>
        <BOUCLE_Sur_que_cest_col(MOTS){type=_format_article}{titre_mot=colonnes}>
                [<div class="#EDIT{texte} texte">(#TEXTE*|afficher_en_colonnes|propre|

image_reduire{350,0})</div>]

        </BOUCLE_Sur_que_cest_col>
        </B_Sur_que_cest_col>
                Heu... Ben là je sais pas trop quel type d'affichage vous voulez...
        <//B_Sur_que_cest_col>
<//B_Test_de_bloc-col>
---------8<--------------

Le premier cas me plaît plus, car plus simple et te permet de définir un
type d'affichage par défaut (s'il n'y a pas de mot-clé). Dans l'ex c'est le
mode colonnes. Mais il faudra utiliser le second cas si le groupe de
mots «_format_article» contient d'autres mots que ces deux là.

Je suis dessus depuis une durée totale de 17heures et des poussières,
j'ai les yeux explosés, j'ai pas dormis et je ne trouve toujours pas.

Si ça te convient, bonne nuit ! :slight_smile:

--
MARNE Bertrand

Re-

Avec beaucoup de retard, désolé mais j'ai enfin réussis à débloquer le
soucis.

Bertrand, c'est ta soluce qui m'a d'ailleurs donné le meilleur
résultat avec tout de même une légère réadaptation.

La boucle finale :

<BOUCLE_test_de_bloc-col(MOTS) {id_article} {type=_format_article}>
        <BOUCLE_corps(ARTICLES) {id_article} {titre_mot=colonnes}>
          [<div class="#EDIT{texte} texte">(#TEXTE*|
afficher_en_colonnes|propre|image_reduire{350,0})</div>]
        </BOUCLE_corps>
</BOUCLE_test_de_bloc-col>
</B_test_de_bloc-col>
<BOUCLE_corps_bloc(ARTICLES) {id_article} {titre_mot=blocs}>
  [<div class="#EDIT{texte} texte">(#TEXTE|image_reduire{400,0})</div>]
</BOUCLE_corps_bloc>
<//B_Test_de_bloc-col>

Là dessus un petit groupe de mot-clés techniques
'_format_article' (réservé articles, recommandé) pour définir la
présentation 'bloc' ou 'colonnes' et le tour est joué.

Bon l'idéal aurait effectivement été de trouver une soluce plus fluide
rendant automatiquement un article en bloc si 'colonnes' n'était pas
choisis mais bon. Au pire je peux expliquer à mon rédacteur qu'un mot-
clé recommandé est en fait obligatoire sinon il aura automatiquement 2
versions de l'article par page (une en bloc et une en colonnes) s'il
ne sélectionne aucun mot clés donc...

Au passage, j'ai revu un peu le filtre de base de cette contrib qui
date quand même de 2004 ou 2005 et qui proposait de créer les colonnes
sous forme de tableaux, mais moi les tableaux, c'est comme le choux-
fleur, j'aime pas ça !

à ajouter dans mes_fonctions.php :

/*
* +------------------------------------+
* NOM DU FILTRE : afficher_en_colonnes
* +------------------------------------+
* DATE : Janvier 2008
* AUTEUR : Loiseau2nuit -- http://www.loiseau2nuit.net
* DESCRIPTIF : Réadaptation de la contrib de buzz
'afficher_en_colonnes' parue
* en 2004 -> http://www.uzine.net/spip_contrib/article.php3?id_article=759
* qui proposait la même chose mais sous forme de tableaux.
* Moi les tableaux, j'aime pas ça ! Alors on revoit la méthode
mais en CSS pur !
* +-------------------------------------+
* FONCTION :
* Il sert a présenter un article sur deux colonnes sur une page
* Le tout sous forme de div paramétrables en CSS
*
* SYNTAXE DANS LES SQUELETTES (inchangée) :
* [(#TEXTE*|afficher_en_colonnes|propre)]
* +-------------------------------------+
*
* Pour toute suggestion, remarque, proposition d'ajout
* reportez-vous au forum de l'article :
* http://www.uzine.net/spip_contrib/article.php3?id_article=759
*/

function afficher_en_colonnes($texte) {
  $page = explode('-----', $texte);
  $num_pages = count($page);
  for ($i = 0; $i < $num_pages; $i++) {
    $resultat .= "<div id=\"colonne-gauche\">".$page[$i]."</div>";
  }

  return $resultat;
}

Rien de bien révolutionnaire, donc...

pourquoi colonne-gauche ? parce qu'à l'origine je cherchais à créer
deux colonnes bien distinctes pour tunner un peu ma mise en forme CSS
mais je n'ai pas encore trouvé la bonne combine pour. Je crois que
j'ai encore 2 ou 3 babioles à (ré)apprendre en php mais dès que je
tiens le bon bout, je pense que je réadapterai carrément la contrib
sous forme de plugin pour proposer un vrai menu de format_article sur
la page de rédaction dans /ecrire

J'aime bien la bidouille mais j'aime bien aussi quand c'est propre.

Toute idée sera bien évidemment la bienvenue :wink:

Bonne journée, et bon code à tous.

Etienne.

On 15 jan, 18:03, MARNE Bertrand <bma...@gmail.com> wrote:

Salut !

Loiseau2nuit (Zzz. dans un passé lointain...) wrote:

> ce qui m'intéresserait aujourd'hui c'est que mon article.html, si le
> titre_mot=bloc m'affiche ceci :
> [<div class="#EDIT{texte} texte">(#TEXTE|image_reduire{400,0})</div>]

> sinon (ou plutôt, "si le titre_mot=colonnes") alors on affiche plutôt
> ceci :
> [<div class="#EDIT{texte} texte">(#TEXTE*|afficher_en_colonnes|propre|
> image_reduire{350,0})</div>]

Et quelque chose comme:
------------->8------------
<BOUCLE_Test_de_bloc-col(MOTS){type=_format_article}{titre_mot=bloc}>
        [<div class="#EDIT{texte} texte">(#TEXTE|image_reduire{400,0})</div>]
</BOUCLE_Test_de_bloc-col>
</B_Test_de_bloc-col>
        [<div class="#EDIT{texte} texte">(#TEXTE*|afficher_en_colonnes|propre|> image_reduire{350,0})</div>]

<//B_Test_de_bloc-col>
-----------8<-------------

tu as essayé ?

On peut aussi affiner avec:
---------------->8-------------
<BOUCLE_Test_de_bloc-col(MOTS){type=_format_article}{titre_mot=bloc}>
        [<div class="#EDIT{texte} texte">(#TEXTE|image_reduire{400,0})</div>]
</BOUCLE_Test_de_bloc-col>
</B_Test_de_bloc-col>
        <BOUCLE_Sur_que_cest_col(MOTS){type=_format_article}{titre_mot=colonnes}>
                [<div class="#EDIT{texte} texte">(#TEXTE*|afficher_en_colonnes|propre|> image_reduire{350,0})</div>]

        </BOUCLE_Sur_que_cest_col>
        </B_Sur_que_cest_col>
                Heu... Ben là je sais pas trop quel type d'affichage vous voulez...
        <//B_Sur_que_cest_col>
<//B_Test_de_bloc-col>
---------8<--------------

Le premier cas me plaît plus, car plus simple et te permet de définir un
type d'affichage par défaut (s'il n'y a pas de mot-clé). Dans l'ex c'est le
mode colonnes. Mais il faudra utiliser le second cas si le groupe de
mots «_format_article» contient d'autres mots que ces deux là.

> Je suis dessus depuis une durée totale de 17heures et des poussières,
> j'ai les yeux explosés, j'ai pas dormis et je ne trouve toujours pas.

Si ça te convient, bonne nuit ! :slight_smile:

--
MARNE Bertrand

_______________________________________________
liste spip
s...@rezo.net - désabonnement : spip-...@rezo.net
Infos et archives :http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP :http://www.spip.net/
irc://irc.freenode.net/spip
FAQ :FAQ webmestre - SPIP