Les Itérateurs pour SPIP 2.1

Les itérateurs sont une fonctionnalité de la branche SPIP 3.*. Ils permettent de faire des boucles non plus seulement sur des articles et autres objets de la base de données SQL de SPIP, mais sur n’importe quoi : fichiers, tableaux de données, web services, etc. En savoir +

Ce plugin met cette fonctionnalité à disposition dans SPIP 2.1. Prenez le temps de lire la documentation et de regarder les nombreuses démos disponibles dans le plugin « Démos des itérateurs ».

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 : https://www.spip.net/fr_article5444.html

Les liens de la documentation originale/officieuse (et en version bêta) :

 

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.

Dernière modification de cette page le 14 décembre 2018

Discussion

24 discussions

  • 2

    Petit exemple pour afficher une image au hasard dans un répertoire :

    <BOUCLE_ls(DATA){datasource #CHEMIN{images/separateurs}/*,glob}{par hasard}{0,1}>
    <img src="#VALEUR" alt="" />
    </BOUCLE_ls>
    • Oui c’est un usage typique. Note qu’on vient de modifier un peu la syntaxe et qu’il vaut mieux désormais utiliser :

      <BOUCLE_ls(DATA){source glob, #CHEMIN{images/separateurs}/*}{par hasard}{0,1}>
      <img src="#VALEUR" alt="" />
      </BOUCLE_ls>

      J’ajoute aussi que si on veut manipuler des attributs des fichiers (date de création, de modification, taille, extension etc.) on peut utiliser le format ls à la place de glob.

    • En fait je n’avais pas vu le dossier de démo... Y’a plein d’exemples dedans, c’est parfait. Encore bravo pour cette écriture qui simplifie la vie... Sans compter le nouveau critère si qui évite l’utilisation de la boucle CONDITION... Bref, merci

    Répondre à ce message

  • 1

    Petit détail : le lien vers spip-contrib dans le fichier plugin.xml est invalide.
    http://www.spip-contrib.net/3667

    • Merci c’est réparé (le fichier .htaccess de SPIP-Contrib n’était pas à jour).

    Répondre à ce message

  • 2

    Bonjour, Fil, bonjour, Matthieu,

    Je prendrai le temps de tester cet ensemble de fonctionnalités dès qu’un moment se libèrera. Je lis qu’avec booksearch, on peut pointer sur le webservice d’Amazone, ce qui m’intéresse au plus haut point ! Cette connexion serait-elle possible (en théorie, ou avec un peu d’huile de coude) avec une application comme zotéro ?

    J’ai parcouru très rapidement les différentes publications, mais il me faudra du temps pour que j’entre dans la logique de tout cela. Vous signalez, en début d’article :

    ... de regarder les nombreuses démos disponibles à l’adresse spip.php ?page=demo/iterateurs.

    Faites-vous référence à d’autres pages ?

    Quoi qu’il en soit, félicitations pour ce bond en avant ! Comme cela, en fin d’année, c’est comme mettre un pied sur mars en 2011 !!!

    Bonne continuation !
    KMk

    • Zotero est sans aucun doute interrogeable, mais il faudrait trouver exactement comment (sa doc http://www.zotero.org/support/dev/s... n’est pas super claire, ne donnant aucun exemple concret).

      Visiblement leur API renvoie des résultats au format ATOM, du coup on peut déjà par exemple lister les éléments d’un utilisateur via :

      <BOUCLE_zotero(DATA)
      {datasource https://api.zotero.org/users/14509/items,atom}>
      <hr />
      [(#VALEUR|print{<br />})]
      </BOUCLE_zotero>

      mais ce n’est pas très différent d’un flux de syndication... on peut sûrement faire beaucoup plus intéressant.

    • Re- bonjour,

      Dès que se dessine « l’ombre d’une éclaircie », je m’y mets... l’envie est trop grande !
      Merci pour cette réponse.

      Bonne fin d’année,
      KMk.

    Répondre à ce message

  • StrangeBlackHole

    Je voulais juste dire un grand merci pour ce superbe plugins qui laisse augurer de grandes choses pour la prochaine version de Spip...

    Répondre à ce message

Ajouter un commentaire

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom