Boucles "documents" pour lister les images d'un site Spip

A partir de Spip version 1.4

Après la publication de Listimg (v.: http://www.uzine.net/spip_contrib/article.php3?id_article=155), il m'a été demandé que ce script qui lisait seulement le répertoire IMG d'un site Spip, retourne également à quel article ou rubrique appartenait une image. Ce qui impliquait d'aller lire la base de données MySql plutôt que le répertoire IMG. Après analyse, j'ai remarqué que la boucle documents de Spip, bien utilisée, permettait de faire cela. C'est évidemment un peu plus complexe que l'implémentation d'un script "qui fait tout", mais c'est aussi beaucoup plus "Spipien", et c'est donc cette voie que j'ai choisi d'exploiter.

La documentation officielle sur les boucles documents se trouve ici:
http://www.spip.net/fr_article1823.html

Voici cependant quelques point utiles à savoir:

1) Spip autorise toujours des images incluses dans les articles.

2) Il autorise des documents joints dans les articles et/ou rubriques, si l'autorisation en est donnée dans l'administration du site (Configuration du site, Contenu du site, Documents joints).

3) Dans la configuration du site, dans les fonctions avancées, Spip offre une possibilité très intéressante: la "Génération de miniatures des images". Cette configuration est activée sur le site de démonstration, avec une taille maximale des vignettes fixée à 150 pixels.
2 précisions:
- Si vous n'activez pas cette possibilité, les miniatures affichées seront celles par défaut (format du document) de Spip.
- Les vignettes ne commenceront à être générées qu'à partir de l'activation de cette possibilité.

4) Le paramètre de boucles documents {mode=document} ou {mode=image} :
- document retourne tous les documents joints (y compris les images non directement insérées dans un article). Le paramètre supplémentaire {extension==jpg|png|gif} permettra de retourner seulement les documents images.
- image retourne toutes les images, jointes ou insérées directement dans un article.
- On utilisera le critère {doublons} pour éviter dans une boucle d'avoir 2 fois un document, par exemple, une image à la fois jointe et insérée dans un article.

Les boucles proposées dans les squelettes:
- img-rub-tout: Toutes les images publiées du site.
- img-rub-tout-prive: Le même, mais avec accès privé (rédacteurs ou administrateurs)
- img-rub-portfolio: Un exemple de portfolio à partir de document joint à une rubrique, la Génération de miniatures des images ayant été activée avant le téléchargement des images sur le site.

Dans img-rub-tout, une vignette cliquable de l'image est affichée, avec les titre, description, type, taille, poids et le n° de l'article (ou de la rubrique) auquel elle réfère, article par article, rubrique par rubrique. Un lien vers l'article (la rubrique) concerné est également affiché.

Dans img-rub-tout-prive, un lien "Modifier cet article (cette rubrique)" est ajouté. Sur une (très) bonne idée de BoOz de spipcontrib, le code spip d'affichage des images dans les articles (<docXX|left>, <imgZZ|center>, etc.) se trouve en dessous de chaque image, à disposition des rédacteurs. Cela leur permet de récupérer aisément les images affichées pour leurs propres articles .

Le package est ici:
http://support.cassiopea.org/spip/img-rub.zip

La démo est ici:
http://test.cassiopea.org/spip/img-rubrique.php3

Note à propos des squelettes proposés:
Vous remarquerez que la partie démo du site de démonstration est d'une présentation fort différente du reste du site. Cela tient à ceci que je trouve important: je suis soucieux de promouvoir les standards du w3c. Le site principal est construit "classiquement", avec des tableaux pour assurer la présentation. Or la tendance actuelle de standardisation est de réserver les tableaux à la structuration des données, et non à la présentation des pages web. J'ai donc choisi de structurer la présentation de la démo uniquement via les CSS (feuilles de style). Comme vous pourrez le constater dans les squelettes du package - où j'ai reproduit cette structure - , la présentation est assurée par des balises <div> </div> contrôlée par la feuille de style. Voyez à ce propos le site très intéressant de l'OpenWeb group (v.: http://openweb.eu.org/).