[PLUGIN] création automatique de dossiers d'image -cool pour les diapo
Hello,
préparant mon départ, je fais le tri dans mon legs
Plugin filesGenerator
Voici un petit plugin qui
1/ crée automatiquement un dossiers d'images à l'enregistrement d'un article.
Il le classe dans sa catégorie associée, exemple :
titre de l'article : "mon premier article"
catégorie : "categorie1"
le dossier image sera créé dans data/images/categorie1/mon-premier-article
Attention ! si l'article fait partie de plusieurs catégories,
il se trouvera dans les différents dossiers associés
exemple :
data/images/categorie1/mon-premier-article
data/images/categorie2/mon-premier-article
2/ à l'appel du hook, il va chercher le(s) dossier(s) concerné(s) et retourne la liste sous forme de tableau
on l'appelle simplement comme ça
L'utilité ?
Par exemple, si vous avez différentes galeries d'images.
1/ on crée l'article (seul un titre suffit) et l'associe à une catégorie
2/ on enregistre (la création du dossier se fait à ce moment)
3/ on envoie les images dans le dossier
4/ on appelle le plugin et on injecte les images dans le widget de diapo
Qu'en pensez-vous ?
Je ne connais pas la portée de ce plugin sur les nouvelles versions de PluXml ...
Je mets un code d'exemple d'utilisation de ce plugin pour une liste d'images destinée à un diapo:
première partie :
on parcourt les dossiers, et classe les images en différentes catégories (taille normal et miniature, il faut les miniatures)
on en profite aussi pour extraire les dimensions et adapter en fonction de la taille du diapo ...
(note: l'histoire du logo et qu'en fait parmi les photos,
s'il y en a une qui s'appelle "logo",
elle est utilisée pour l'illustration de l'article ...)
2ème étape, on affiche la liste d'images
Bien entendu le code d'affichage est à adapter au plugin de diapo, de lightbox, etc ...
Enjoy
préparant mon départ, je fais le tri dans mon legs
Plugin filesGenerator
Voici un petit plugin qui
1/ crée automatiquement un dossiers d'images à l'enregistrement d'un article.
Il le classe dans sa catégorie associée, exemple :
titre de l'article : "mon premier article"
catégorie : "categorie1"
le dossier image sera créé dans data/images/categorie1/mon-premier-article
Attention ! si l'article fait partie de plusieurs catégories,
il se trouvera dans les différents dossiers associés
exemple :
data/images/categorie1/mon-premier-article
data/images/categorie2/mon-premier-article
2/ à l'appel du hook, il va chercher le(s) dossier(s) concerné(s) et retourne la liste sous forme de tableau
on l'appelle simplement comme ça
[== PHP ==]
$dossiers = $plxShow->callHook('filesGenerator');
L'utilité ?
Par exemple, si vous avez différentes galeries d'images.
1/ on crée l'article (seul un titre suffit) et l'associe à une catégorie
2/ on enregistre (la création du dossier se fait à ce moment)
3/ on envoie les images dans le dossier
4/ on appelle le plugin et on injecte les images dans le widget de diapo
Qu'en pensez-vous ?
Je ne connais pas la portée de ce plugin sur les nouvelles versions de PluXml ...
Je mets un code d'exemple d'utilisation de ce plugin pour une liste d'images destinée à un diapo:
première partie :
on parcourt les dossiers, et classe les images en différentes catégories (taille normal et miniature, il faut les miniatures)
on en profite aussi pour extraire les dimensions et adapter en fonction de la taille du diapo ...
(note: l'histoire du logo et qu'en fait parmi les photos,
s'il y en a une qui s'appelle "logo",
elle est utilisée pour l'illustration de l'article ...)
[== Indéfini ==]
<?php
// récupération des dossiers d'images
$dossiers = $plxShow->callHook('filesGenerator');
if(is_array($dossiers)) {
$vignettes = array();
$images = array();
$infos_width = array();
$infos_height = array();
$logo = array();
foreach ($dossiers as $k => $dossier_img){
$fichiers = scandir($dossier_img);
foreach($fichiers as $k=>$v){
if($v != '.' && $v != '..' && !is_dir($dossier_img.$v) && (in_array(strtolower(strrchr($v,'.')), array('.gif', '.jpg', '.png'))) ) { // on isole que les fichiers images
if(stripos($v, ".tb.")!==false){
array_push($vignettes, $dossier_img."/".$v); // on remplie le tableau des vignettes
if($v=="logo.tb.jpg"){$logo['ptt'] = $dossier_img."/".$v;}else{}
} else {
array_push($images, $dossier_img."/".$v); // on remplie le tableau des images
if($v=="logo.jpg"){ $logo['gd'] = $dossier_img."/".$v; }else{}
}
}else{}
}
}
// on va vérifier s'il y a des photos autres que le logo pour afficher le diapo
$countImage = sizeof($images);
if($images>0){ // il y a des photos dans le dossier
foreach($images as $k => $v){
$pos1 = strripos($v,'/');
$isol = substr($v, $pos1+1, 4);
if(strtolower($isol)!="logo"){ // il y a des photos autres que le logo
$insertImages = true; // on affiche le diapo
}else{}
}
}else{}
foreach($images as $k=>$value){
# Informations sur l'image
list($width_orig,$height_orig,$type) = getimagesize($value); // extraction des données liées à l'images
# les dimensions voulues
$width_diapo = 448;
$height_diapo = 277;
$ratio_diapo = $width_diapo/$height_diapo;
$ratio_orig = $width_orig/$height_orig;
if($width_orig>$height_orig){ // image horizontale
if(($width_orig/$height_orig)>$ratio_diapo){ // images plus large que le diapo
array_push($infos_width, ceil($width_diapo)); // on remplie le tableau des largeurs
array_push($infos_height, ceil($width_diapo/$ratio_orig)); // on remplie le tableau des hauteurs
}else{
array_push($infos_width, ceil($height_diapo*$ratio_orig)); // on remplie le tableau des largeurs
array_push($infos_height, ceil($height_diapo)); // on remplie le tableau des hauteurs
}
}else{ // image verticale
array_push($infos_width, ceil($height_diapo*$ratio_orig)); // on remplie le tableau des largeurs
array_push($infos_height, ceil($height_diapo)); // on remplie le tableau des hauteurs
}
}
$nb_img = count($vignettes);
$gallerie = array(
"vignette" => $vignettes,
"image" => $images,
"width" => $infos_width,
"height" => $infos_height,
"logo" => $logo,
);
}else{ $insertImages = false;}
?>
2ème étape, on affiche la liste d'images
[== Indéfini ==]
<?php if($insertImages) :?>
<div class="diapo_content grid_6 row_6 border_1 bg_light shadow">
<ul class="jDiaporama diapo_produits">
<?php for($i=0; $i<$nb_img; $i++) : ?>
<?php $pos = strpos($gallerie["image"][$i], "logo");
if ($pos === false) : ?>
<?php
$style = "style=\"";
$style .= "margin-left:".ceil(($width_diapo-$gallerie["width"][$i])/2)."px;";
if($gallerie["height"][$i]<$height_diapo){
$style .= " margin-top:".ceil(($height_diapo-$gallerie["height"][$i])/2)."px;";
}else{}
$style .= "\"";
?>
<li>
<a href="<?php echo $gallerie["image"][$i]; ?>" class="lightbox">
<img src="<?php echo $gallerie["image"][$i]; ?>" width="<?php echo $gallerie["width"][$i]; ?>px" alt="Exemple de <?php $plxShow->artTitle(''); ?>" height="<?php echo $gallerie["height"][$i]; ?>px" <?php echo $style; ?>/>
</a>
</li>
<?php endif; ?>
<?php endfor; ?>
</ul>
</div>
<?php endif; ?>
Bien entendu le code d'affichage est à adapter au plugin de diapo, de lightbox, etc ...
Enjoy
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses