1. Utilisation d’un modèle.
Avantages : souplesse de mise en œuvre (pas besoin de toucher au squelettes), souplesse de l’insertion dans un article ou autre, personnalisation possible des tailles de vignettes ou des vitesses de diaporama par exemple, préservation du portefolio pour d’autres tâches.
Inconvénients : peut s’avérer complexe pour certains rédacteurs.
Voici comment faire et utiliser ce modèle...
2. Passer en paramètre les images à afficher.
Il semble naturel d’avoir une transmission par un paramètre du type images= ce qui donne pour l’appel du modèle <ma_galerie|images=45,89,23,56>
comme code minimal.
Il arrive fréquemment que les id des documents images soient consécutives (c’est le cas si on a inclus les images par la procédure de ftp dans /tmp/upload/, ou bien par l’intermédiaire d’un zip). On a alors <ma_galerie|images=45,46,47,48,49>
, ce qui peut s’avérer fastidieux. D’où l’idée d’introduire une notation du type <ma_galerie|images=45..49>
pour désigner des images d’id successives, mais qui accepterait également <ma_galerie|images=45,89..93,52>
une notation mixte.
Pour récupérer les documents il suffit de placer leurs id dans un tableau qui servira de critère avec l’opérateur IN à une boucle portant sur ceux-ci.
C’est ce qu’assurent les deux fonctions suivantes servant à traiter la chaîne de données par une expression régulière et à fabriquer une chaine de nombres successifs à partir de la notation xx..yy
function images_point_point($match) {
$str = '';
for ($i = $match[1]; $i <= $match[2]; $i++){
$str .= $i.',';
}
$str = substr($str, 0, -1);
return $str;
}
function images_vers_tableau ($texte) {
$texte = str_replace(' ', '', $texte);
$texte = preg_replace_callback(
'<span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+KFxkKylcLlwuKFxkKz8pPC9jb2RlPg=="></span>U',
'images_point_point',
$texte);
$tableau = array();
$tableau = explode (',', $texte);
return $tableau;
}
Le modèle ma_galerie.html destiné à l’affichage de la galerie photos ou du diaporama commencera alors par traiter la variable « images » passée, pour la transformer en tableau assimilable par la bouche.
#SET{les_images,(#ENV**{images}|images_vers_tableau)}
<BOUCLE_galerie(DOCUMENTS) {id_document IN #GET{les_images}} {extension IN jpg,png,gif}{tous}>
mon code d'affichage
</BOUCLE_galerie>
Les images sont donc simplement jointes à l’article, voire à un autre qui n’est pas forcément publié et en ligne, voire à aucun si on utilise le plugin médiathèque.
Exemple de mise en œuvre dans deux plugins, à venir. Mais le principe peut être transposé pour d’autres utilisation : affichage de plusieurs flux syndiqués, d’une liste de sites,…
Discussions par date d’activité
2 discussions
Bonjour Domiw,
Merci pour cette contribution intéressante à implémenter dans les futurs plugins :-)
@+
Merci pour les commentaires (le tiens et celui de François-Daniel).
Je pense que pour aller un peu plus loin, on pourrait envisager la notion d’album (au sens des catalogueurs de photos type iphoto ou autres). Une « liste de lecture » d’images associées à des articles différents ou pas, une image pouvant appartenir à plusieurs albums. Plutôt alors que de passer les identifiants des images à une galerie photo ou à un diaporama, on désignerai l’album (ou les albums) à afficher.
Voilà une idée de plugin.
La médiathèque permet l’accrochage d’un document à plusieurs articles. Les mot clé partout peuvent cataloguer un groupe. Y a tout :)
Répondre à ce message
Bonjour domiw,
Merci pour cette contribution pédagogique importante qui tombe bien dans une réflexion qui m’interpelle depuis un certain temps sur ce thème : serait-il possible de créer un plugin « générique » standardisé permettant de créer « aisément » de nouveaux sliders d’images.
Ta contribution met bien en évidence les divers aspects de la problématique et pose les bases d’une approche rationnelle.
Je me réjouis de te lire dans « l’Exemple de mise en œuvre dans deux plugins, à venir » que tu prépares.
Les sliders (+ menu) sont en effet en vogue dans les CMS à cause de leur valeur ajoutée en terme d’esthétique, d’information et de navigation.
Parmi les réalisations récentes j’ai par exemple beaucoup apprécié les sliders de ngombe (d’autres sont aussi très impressionnantes) :
2 mars 2011 – par ngombe
http://www.spip-contrib.net/Nivo-Slider,3747
9 avril 2011 – par ngombe
http://www.spip-contrib.net/JW-Image-Rotator
et on ne peut qu’espérer que de nouveaux sliders vont être créés.
Ton article devrait y contribuer !
Cordialement
FDG
Répondre à ce message
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |