Voici quelques exemples des boucles que permettent les itérateurs de SPIP :
— lire un tableau de données produit par une fonction quelconque
— afficher le contenu d’un fichier local au format XML, CSV, JSON, YAML, iCalendar, etc.
— boucler sur la liste des fichiers présents dans un répertoire du serveur
— faire une requête sur un webservice et afficher les résultats.
Concrètement, on peut sans grand effort faire des boucles « Web 1.0 » sur toutes sortes de fichiers déposés sur le serveur. On peut aussi boucler en « Web 2.0 » sur des vidéos YouTube, sur des photos Flickr, des livres (par titre ou par numéro ISBN), sur des requêtes de traduction sur google.translate, sur un tableur édité sur Google Documents, etc.
Pour ne prendre qu’un seul exemple, voici une boucle qui permet d’afficher le contenu d’un tableur Google Documents :
Boucle :
[(#REM) Identifiant de notre tableur]
#SET{key,0AolUP3c6K9JodGwxRjJzb2hyTGZLU29qRVItRXk1VXc}
<B_csv>
<table>
<BOUCLE_csv(DATA)
{source csv, https://spreadsheets.google.com/pub?key=#GET{key}&hl=en&output=csv}>
<tr>
<td>#VALEUR{0}</td>
<td>#VALEUR{1}</td>
<td>#VALEUR{2}</td>
</tr>
</BOUCLE_csv>
</table>
</B_csv>Résultat :
Pays PIB Population Rémitanie 12 1 Baldoghistan 23 2 Républiques Unies 43 3 Diloduristan 12 4 Zarlatie 9 5
Ce plugin a été intégré dans SPIP 3 : http://www.spip.net/fr_article5444.html
Les liens de la documentation originale/officieuse (et en version bêta) :
— Les itérateurs de SPIP
— Exemples de BOUCLE(DATA)
— Exemples de boucles YQL
— Le plugin iCalendar
— Plugin Booksearch
Si vous utilisez ce plugin, n’hésitez pas à partager dans le forum ci-dessous vos formats, et toutes vos astuces pour boucler sur différents services et fichiers.



Version 1.0.0
Vos commentaires
# Le 13 juin à 18:56, par BoOz
En réponse à : Les Itérateurs pour SPIP 2.1
Hello,
Voici une technique pour lister un répertoire en triant les fichiers par date. J’ignore s’il y a plus simple, mais j’ai du recourir à deux boucles.
#SET{table,#ARRAY}<BOUCLE_ls(DATA){source glob, #CHEMIN{lol/*.html}>[(#SET{table,#GET{table}|array_merge{#ARRAY{#VALEUR,#VALEUR|filemtime}}})]</BOUCLE_ls>
<BOUCLE_ls2(DATA){source table, #GET{table}}{!par valeur}>#CLE : [(#VAL{Y-m-d H:i:s}|date{#VALEUR})]</BOUCLE_ls2>
# Le 14 juin à 07:44, par denisb
En réponse à : Les Itérateurs pour SPIP 2.1
il existe la méthode ’ls’ fournie avec iterateurs (Version : 1.0.0 [72598]) pour spip 2 et qui permet de faire :
[(#VALEUR{file})] : [(#VALEUR{mtime})]
</BOUCLE_mon_ls>
et on peut utiliser
[(#VALEUR|foreach)]dans la boucle pour afficher toutes les clefs utilisables :- dirname => squelettes-dist- basename => test_boucle.html
- extension => html
- filename => test_boucle
- dev => 234881026
- ino => 8235281
- mode => 33188
- nlink => 1
- uid => 501
- gid => 501
- rdev => 0
- size => 607
- atime => 1371188432
- mtime => 1371188431
- ctime => 1371188431
- blksize => 4096
- blocks => 16
- file => test_boucle.html
Répondre à ce message
# Le 12 juin à 23:55, par Kyomii
En réponse à : Les Itérateurs pour SPIP 2.1
Bonjour,
je souhaiterai savoir si on peut faire une boucle DATA sur un lecteur réseau, je souhaite parcourir certains dossiers du lecteur et en afficher les fichiers.
J’ai fait quelques tests avec glob sans résultat, je n’ai pas d’erreurs mais aucun resuĺtats.
Je me suis basé sur ce code ci dessous en remplaçant
IMG/jpg/*.jpgpar le chemin de mon lecteur réseau, mais ça ne fonctionne pas.<BOUCLE_ls2(DATA){source glob, IMG/jpg/*.jpg}>[(#VAL{Y-m-d H:i:s}|date{#VALEUR|filemtime})] / #VALEUR
</BOUCLE_ls2>
Merci de votre aide !
# Le 13 juin à 07:21, par Pierre KUHN
En réponse à : Les Itérateurs pour SPIP 2.1
Bonjour
On peut avoir le code que tu as fait ?
Avec le code IMG/ ça fonctionne ?
# Le 13 juin à 11:16, par kyomii
En réponse à : Les Itérateurs pour SPIP 2.1
Bonjour,
Avec IMG/ oui ça fonctionne, voici le code que j’ai utilisé :
<BOUCLE_ls2(DATA){source glob, IMG/doc/*.doc}>[(#VAL{Y-m-d H:i:s}|date{#VALEUR|filemtime})] / #VALEUR
</BOUCLE_ls2>
Et voici le code utilisé pour accéder au lecteur réseau
<BOUCLE_ls2(DATA){source glob, D:\\DF\\DSE\\PS\\Procedures\\Appli\\*.doc}>[(#VAL{Y-m-d H:i:s}|date{#VALEUR|filemtime})] / #VALEUR
</BOUCLE_ls2>
merci par avance !
Répondre à ce message
# Le 6 mars à 23:23, par Suske
En réponse à : Les Itérateurs pour SPIP 2.1
J’ai bien cherché partout sur le forum et je n’ai pas vu un endroit où ce point aurait été abordé, alors voilà, je voulais signaler un point important à mes yeux :
Les itérateurs c bôôôô
- même le mercredi soir à 23h23
- même dans le core
Si, merci.
Répondre à ce message
# Le 31 mai 2012 à 12:32, par AlainF
En réponse à : Les Itérateurs pour SPIP 2.1
Bonjour,
Merci pour votre travail qui m’intérresse particulièrement.
Avec comme configuration Spip 2.1.14 et le plugin Itérateurs pour Spip 2.1, je souhaite récupérer les éléments d’un fichier xml : soit le prix (pppp) d’un système de réservation.
Fichier XML :
<?xml version="1.0" encoding="utf-8"?><message>
<success />
<pricingRangeResponse groupId="xxxx" beginDate="2012-06-01" endDate="2012-06-01" defaultCurrency="EUR">
<hotel id="yyyy">
<rate id="zzzzz" type="LowestMinimumPrice">
<room id="rrrrr" price="pppp" />
</rate>
</hotel>
</pricingRangeResponse>
</message>
En utilisant la boucle issue du plugin Itérateurs :
<BOUCLE_r8(DATA){source xml, http://adresse.dufichier.xml}{datapath }>"#CLE":
<B_f>
<ul>
<BOUCLE_f(DATA){source table, #VALEUR**}>
<B_g>
<li>"#CLE":
<BOUCLE_g(BOUCLE_f)/>
</B_g><li>#VALEUR</li><//B_g></BOUCLE_f>
</ul>
</B_f>
</BOUCLE_r8>
je récupère tous les éléments :
- « success »
- « pricingRangeResponse »
- « xxxx »
- etc.
dont « pppp » alors que je ne souhaite que la valeur « pppp » de « price= » :
Je n’arrive pas à indiquer le(s) critère(s) nécessaire dans la boucle, si vous avez une idée, je suis preneur.
Merci par avance.
# Le 31 mai 2012 à 14:21, par Matthieu Marcillaud
En réponse à : Les Itérateurs pour SPIP 2.1
En attendant une intégration un jour (c’est un peu tout neuf et en test), je vous propose de créer un fichier mes_fonctions.php dans votre squelettes contenant cette fonction :
De la sorte vous pourrez utiliser
Avec beaucoup plus d’information présentes. Utilisez [<pre>(#VALEUR|print_r{1})</pre>] pour les afficher et étudier comment récupérer votre info.
# Le 11 février à 12:53, par Cedric Morin
En réponse à : Les Itérateurs pour SPIP 2.1
Pour http://spip3.quejai.me/xml-afficher-le-cours-du-dollar-des-30-derniers-jours j’ai corrigé la fonction
inc_simplexml_to_array_distci-dessus pour en faciliter la lecture par la boucleDATA:# Le 27 février à 16:49, par Suske
En réponse à : Les Itérateurs pour SPIP 2.1
Hello,
Cette fonction ça rend le xml utilisable dans SPIP ;-). Du coup, je l’ai :
- intégrée dans ce plugin (DATA, simplexml)
- mise dans un plug SPIP3 en attendant l’intégration au core http://files.spip.org/spip-zone/ite...
- accessoirement, dans la foulée, les démos ont été sorties dans un plugin séparé...
Le tout dans le cadre du grand complot ircien.Répondre à ce message
# Le 5 septembre 2012 à 17:26, par Pierrot
En réponse à : Les Itérateurs pour SPIP 2.1
Bonjour,
j’ai une question préalable stupide mais qui vient de me faire tourner en rond pendant une heure : comment fait-on pour afficher du code ici sans qu’il soit transformé (comme le font certains plus haut) ?
J’avais un beau message de 50 lignes que j’ai finalement abandonné car mes boucles étaient explosées ... j’ai tenté tout ce que je connais, ma barre d’outil ne comporte pas les habituels boutons pour ça, aucun html n’est accepté, je ne peux pas mettre la balise code ... google n’est pas mon ami sur ce coup là ... bref j’ai fini par poster sur le forum ou tout ça marche nickel, mais je pense toujours que ma question serait mieux ici donc j’espère qu’une bonne âme me donnera le truc ... (d’ailleurs il me semble avoir déjà utilisé ça avant ...).
Merci. Pierre.
# Le 5 septembre 2012 à 18:08, par Fil
En réponse à : Les Itérateurs pour SPIP 2.1
normalement tu utilises <code>.....</code>
# Le 5 septembre 2012 à 18:12, par Pierrot
En réponse à : Les Itérateurs pour SPIP 2.1
Bonjour,
Merci mais ...
testp..... ça marche. Je jure que j’ai essayé exactement ça (et aussi cadre), testé, vidé le cache du navigateur, redémarré ledit navigateur, sans succès, chaque fois j’avais le textarea en rouge en alerte. Merci !!
# Le 5 septembre 2012 à 18:14, par Pierrot
En réponse à : Les Itérateurs pour SPIP 2.1
J’ai finalement démarré ma question sur le forum, ici :
http://forum.spip.net/fr_246277.html#forum246284
Si quelqu’un a une idée, je précise c’est une question qui concerne les itérateurs sur Spip3.
# Le 5 septembre 2012 à 18:21, par Fil
En réponse à : Les Itérateurs pour SPIP 2.1
en fait ça bloquait au niveau du plugin nospam — il était devenu trop chatouilleux
cf. http://zone.spip.org/trac/spip-zone/changeset/65562 et correction http://zone.spip.org/trac/spip-zone/changeset/65564
# Le 5 septembre 2012 à 18:37, par Pierrot
En réponse à : Les Itérateurs pour SPIP 2.1
Ah ok ... une explication, ça c’est cool, je commençais à douter de mes capacités.
Répondre à ce message
# Le 30 décembre 2010 à 11:35, par Corrobori
En réponse à : Les Itérateurs pour SPIP 2.1
Humm
sur un spip tout neuf avec les plugins agenda , bonux ,cfg et crayons j’ai
Parse error : syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or ’}’ in /home/www/monsite/www/agenda/plugins/auto/iterateurs/public/iterateur.php on line 23.
Les modifications du 30/12 réparent ça où c’est autre chose.
En tout cas cette série de plugins à l’air très prometteuse .
# Le 30 décembre 2010 à 11:50, par Matthieu Marcillaud
En réponse à : Les Itérateurs pour SPIP 2.1
N’oublions pas de dire qu’il faut PHP 5.1 minimum :) ... Et 5.3 pour utiliser
glob()il me semble.# Le 30 décembre 2010 à 11:53, par Fil
En réponse à : Les Itérateurs pour SPIP 2.1
Non, pas glob ! glob fonctionne à partir de (PHP 4 >= 4.3.0, PHP 5)
# Le 30 décembre 2010 à 11:54, par Matthieu Marcillaud
En réponse à : Les Itérateurs pour SPIP 2.1
Rectification...
glob()c’est 4.3 pas 5.3... reste que les itérateurs, c’est PHP 5 qu’il faut. Nous allons le mentionner.# Le 7 octobre 2011 à 17:38, par reda aourag
En réponse à : Les Itérateurs pour SPIP 2.1
bonjour
si dans une requête sql avec itérateur je veux interroger une seconde base déclarer dans spip, pouvez vous me donner la syntaxe ?
ex :
#SETreq,« select libelle_commune, id_entree from spip_commune »
merci par avance pour votre reponse
Répondre à ce message
# Le 24 août 2011 à 21:23, par Yffic
En réponse à : Les Itérateurs pour SPIP 2.1
Hello
Serait-il envisageable de pouvoir « paramétrer » la boucle ENUM afin de la faire tourner à l’envers ? (ça évite de faire un calcul ensuite)... Et p’têt même aussi que ça servirait si on pouvait faire varier le pas ?
Répondre à ce message
# Le 15 avril 2011 à 16:39, par mirobolus
En réponse à : Les Itérateurs pour SPIP 2.1
Je viens de le faire, j’ai tout rechargé sur le serveur, et mon menu déroulant par famille de produits est toujours vide. Je ne comprends pas. Y a-til un cache au niveau du plugin ? Ou des fichiers qui se crèent ailleurs ? La page est ici
# Le 15 avril 2011 à 17:02, par Fil
En réponse à : Les Itérateurs pour SPIP 2.1
Vérifie bien ton squelette, car si le deuxième menu est vide, le premier est lui bien rempli
# Le 15 avril 2011 à 17:12, par mirobolus
En réponse à : Les Itérateurs pour SPIP 2.1
Merci pour ton aide.
Pour le squelette, c’est justement le 2e formulaire que j’ai touché aujourd’hui en tentant d’inclure dans la boucle
{cle>0}. Ensuite, j’ai enlevé cette chaîne de caractères et rebalancé sur le serveur. Et depuis, çà ne veut plus revenir comme avant.Précision : chaque formulaire de recherche est indépendant dans un fichier, dans le dossier formulaires.
Je ne vois pas... Cà semble venir de la mémoire quelque part.
# Le 15 avril 2011 à 17:25, par mirobolus
En réponse à : Les Itérateurs pour SPIP 2.1
Çà remarche : j’ai vidé tout le contenu de mon dossier cache et renvoyé le fichier du formulaire famille.
En tout cas, merci pour ta dispo. Maintenant, cette histoire de tri dans le contenu du menu déroulant reste à régler (comme tu le vois, il y a une cellule vide et l’item famille qui est la clé de ma colonne)..
Répondre à ce message
# Le 15 avril 2011 à 16:00, par mirobolus
En réponse à : Les Itérateurs pour SPIP 2.1
{cle>0}ne fonctionne pas (mon menu disparaît de l’écran).{cle=0}m’affiche le menu avec une seule cellule vide.Depuis cet essai, impossible de faire refonctionner le bastringue : Rechargement dans l’espace privé + cache navigateur vidé + renvoi sur le serveur du fichier csv (et même déplacement) + réinstall du plugin : le menu déroulant reste à son dernier état (1 cellule vide) et la page de résultat de ma recherche ne m’affiche plus rien.
Ce qui est étrange, c’est que ce n’est pas la 1re fois que çà m’arrive : ce matin, la recherche ne fonctionnait pas du tout alors que je n’avais rien touché depuis des jours.. Et çà se remet à fonctionner sans que je comprenne vraiment pourquoi. Avez-vous des soucis de ce genre ?
Tiens, d’ailleurs, là, la page de résultat remarche, mais le menu déroulant reste vide.
# Le 15 avril 2011 à 16:03, par Fil
En réponse à : Les Itérateurs pour SPIP 2.1
en cas de doute, essaie avec
?var_mode=recalculdans l’URLRépondre à ce message
# Le 31 mars 2011 à 15:04, par nino
En réponse à : Les Itérateurs pour SPIP 2.1
Bonjour,
Je suis intéressé par les boucles des itérateurs pour faire une recherche dans un fichier csv (répertoire d’adresses). Que se passe-til si mon tableau comporte des cellules vides ? Comment les exclure de la liste récupérée ? j’ai essayé de créer une liste déroulante qui récupère les noms de mes contacts, mais si une case est vide, le 1er élément de ma liste est une zone vide.
Merci.
# Le 15 avril 2011 à 12:38, par mirobolus
En réponse à : Les Itérateurs pour SPIP 2.1
Je rejoins cette question avec une nuance dans la demande : dans la boucle DATA, comment peut-on faire pour exclure la 1re ligne de mon fichier, celle qui contient le nom de mes colonnes ? J’ai besoin de ces éléments pour faire ma recherche, mais pas pour construire le menu déroulant de mon formulaire de recherche.
Et effectivement, si mon csv contient une cellule vide, elle va apparaître dans mon menu déroulant. Le critère fusion me permet de ne pas avoir x cellules vides dans le menu, mais je ne sais pas comment les ignorer carrément.
Merci !!
# Le 15 avril 2011 à 14:42, par Fil
En réponse à : Les Itérateurs pour SPIP 2.1
peut-être avec le critère
{cle>0}Répondre à ce message