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,…
Aucune discussion
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 : |