insertion auto des images d'un dossier

mars 2009 modifié dans Entraide
maintenant qu'il possible (via modif) d'avoir des dossiers dans le gestionnaire d'images, je pense qu'il serait bien de pouvoir ajouter toutes les miniatures d'un dossier d'un seul coup avec un bouton dans le gestionnaire. Ce bouton pourrait ajouter les miniatures avec un lien vers la grande image les unes après les autres. Cela permettrait une gestion facilité d'un grand nombre d'image et ce sans la moindre erreur.

OU mieux encore, un bouton qui ajouterait un bout de code PHP qui "écouterait" le dossier en question afin de lister dynamiquement toutes les images dudit dossier. De cette façon il serait possible d'écrire un article avec, par exemple 10 img, et d'ajouter via le gestionnaire (ou via fTP) 3 img un peu plus tard. Ces 3 img s'ajouteraient automatiquement dans l'article.

Qu'en pensez vous ?

J'utilise le code suivant, qui remplit cette fonction, mais uniquement pour les pages statiques. Comment faire pour les articles ?
<?php

	# Récupération des images du dossier

	$dirImg = 'data/images/pluckr/';

	$plxImg = & new plxGlob($dirImg);

	$aImg = $plxImg->query('/(.+).(gif|jpg|jpeg|png|swf|swc|psd|tiff|bmp|iff|jp2|jpx|jb2|jpc|xbm|wbmp)$/i');

			if(!$aImg) { # Aucune image
				echo 'Aucune image';
			} else { # On affiche les images
				$nb = count($aImg);
				for($i=0; $i < $nb; $i++) {
					$name = str_replace($dirImg, '',$aImg[$i]);
											
						echo '<a rel="shadowbox" href="'.$dirImg.$aImg[$i].'" title="'.$name.'"><img class="img-article-150100" src="/MonBlogPLUxml/image.php/'.$aImg[$i].'?width=150&height=100&cropratio=3:2&image=/MonBlogPLUxml/'.$dirImg.$aImg[$i].'" alt="'.$name.'" /></a>'."\n";
						
			}
		}
?>

Réponses

  • gok6tmgok6tm Member
    il me semble que les articles ne peuvent pas intégrer de code php.

    Le tout doit pouvoir être fait en javascript dans le theme, par exemple à l'aide d'un remplacement :
    - appel de la fonction dans la redaction de l'article
    <span class="minImg">nomDossier</span>
    
    avec un css .minImg {display:hidden;}
    - fonction javascript va chercher les images (je ne sais pas si c'est possible) sinon via ajax fait appel à un fichier php qui s'occupe de renvoyer la liste des images du dit dossier
  • en fait MARAMA a lié cet article http://www.spip-contrib.net/Lancer-un-script-PHP-dans-un dans un post sur le php dans les articles et je me demandais si cela était envisageable pour le cas qui m'intéresse.
  • gok6tmgok6tm Member
    la methode présentée pour spip doit être réalisable pour pluxml il faut regarder précisémment comment l'intégrer dans plx.show.

    L'aspect image étant "accessoire" une inclusion via ajax semble plus appropriée car extérieur au core et fonctionnement identique. Perso j'attend la venue des plugins pour voir comment développer des greffons pour pluxml. modifier le "core" ne semble pas viable pour la compatibilité avec les futures versions.
  • Cette fonction serait effectivement très intéressante pour moi étant donné que je créé un dossier image par article, la plupart du temps.
    Une fonction intéressante serait aussi de créer un routine permettant de générer les miniatures en checkant un dossier donné. En effet, lorsque l'on a +100 images à uploader dans un dossier,la seule façon de créer les miniatures est de les importer un à un via la fonction native de PluXml. Cela prend un certain bout de temps alors qu'avec un logiciel de ftp, c'est tout automatique (mais on n'a pas les miniatures)

    Par contre, ta fonction sur une page statique, super cool. C'est une galerie d'image en fin de compte. Accepte-t-elle les sous dossiers?
  • @FredFred : il faut faire une page statique par dossier souhaité. Donc ce n'est pas viable pour une galerie mais juste pour une page de photos. En revanche le script SMART PHP RESIZER http://shiftingpixel.com/2008/03/03/smart-image-resizer/ fait ce que tu demandes. Tu uploades tes images via FTP et lors de l'ajout des images via le gestionnaire, il crée les miniatures. Si tu as tout bien paramétré (un peu galère) tu as facilement une galerie avec mini + lien avec lightbox vers grande. Mais il y a pas mal de choses à modifier.
  • SapinTremblant a écrit:
    @FredFred :[...] En revanche le script SMART PHP RESIZER http://shiftingpixel.com/2008/03/03/smart-image-resizer/ fait ce que tu demandes. Tu uploades tes images via FTP et lors de l'ajout des images via le gestionnaire, il crée les miniatures. Si tu as tout bien paramétré (un peu galère) tu as facilement une galerie avec mini + lien avec lightbox vers grande. Mais il y a pas mal de choses à modifier.
    Ca a l'air alléchant tout ça. Je vais voir si je peux arriver à paramétrer tout ça.
    Merci pour le tuyau ;)
  • StéphaneStéphane Member, Former PluXml Project Manager
    Attention smart php resizer requiert PHP 5.1.0+
    Tous les hébergeurs ne sont pas configurés par défaut en php5. Très souvent il faut ajouter une ligne dans un fichier .htaccess pour activer php5 avec une syntaxe différente suivant le choix de ces hébergeurs.

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Et bien comme ça, si je pensais que ça allait être facile ... c'est raté! :P
  • AndreaAndrea Member
    mai 2009 modifié
    Moi ça m'intéresserait même uniquement pour les pages statiques

    Mais il reste "en dur" /MonBlogPLUxml dans ce code !
    echo '<a rel="shadowbox" href="'.$dirImg.$aImg[$i].'" title="'.$name.'"><img class="img-article-150100" src="/MonBlogPLUxml/image.php/'.$aImg[$i].'?width=150&height=100&cropratio=3:2&image=/MonBlogPLUxml/'.$dirImg.$aImg[$i].'" alt="'.$name.'" /></a>'."\n";
    
    que j'ai remplacé par le chemin depuis la racine de mon site mais j'ai du oublier quelque chose ?
    echo '<a rel="shadowbox" href="'.$dirImg.$aImg[$i].'" title="'.$name.'"><img class="img-article-150100" src="/blog/pluxml/admin/image.php/'.$aImg[$i].'?width=150&height=100&cropratio=3:2&image=/blog/pluxml/'.$dirImg.$aImg[$i].'" alt="'.$name.'" /></a>'."\n";
    
    j'ai le lien (correct) vers l'image mais la miniature ne s'affiche pas

    PS: image.php est dans le répertoire admin (beta 4.1) j'ai donc ajouté /admin/ devant, c'est bien ça ?
  • j'ai ajouté "/MonBlogPLUxml" car ce site experimental est dans un sous-dossier mais tu peux l'enlever si ton site a une install classique. Aussi, j'ai mis image.php dans /data à coté du dossier /imagecache a créer.
  • AndreaAndrea Member
    Merci pour ces quelques précisions
    Mais je n'arrive toujours pas à afficher les miniatures !

    Comme je suis chez free.fr, il me semble de mémoire que les adresses du type image.php/... ne sont pas possible
    ceci dit c'est peut-être de mon côté ;-)) l'erreur...
  • AndreaAndrea Member
    après avoir tester cela chez Olympe-Net. c'est la même chose !
    SapinTremblant a écrit:
    j'ai mis image.php dans /data à coté du dossier /imagecache a créer.
    Mais tu parles bien du fichier images.php de PluXML se situant dans e répertoire /admin à l'origine ?
    celui-ci c'est images avec un 's' à la fin !
  • Merci beaucoup!


    commission de surendettement - commission de surendettement, vous pouvez demander un dossier de surendettement.
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour

    je vous propose cette solution

    Dans le fichier core/lib/class.plx.show.php ajouter la fonction suivante
    function imagesList($dir, $tb=true) {
    	
    		# On récupère la liste des images
    		$glob = new plxGlob($dir);
    		if ($files = $glob->query('/[a-z0-9-_]+.(jpg|gif|png)'.($tb?'.tb':'').'$/')) {
    			foreach($files as $filename) {
    				$file = $dir.'/'.$filename;
    				if ($tb)
    					echo '<li><a href="'.str_replace('.tb', '', $file).'"><img src="'.$file.'" alt="" /></a></li>';
    				else
    					echo '<li><a href="'.$file.'"><img src="'.$file.'" alt="" /></a></li>';
    			}
    		}	
    	
    	}
    
    dans le fichier css de votre theme ajouter le code suivant
    .imagesList li {
    	float:left;
    	padding: 0 15px 15px 0;
    }
    
    Maintenant pour ajouter automatiquement des images d'un dossier dans une page statique ajouter le code suivant:
    <ul class="imagesList">
    <?php 
    global $plxShow;
    $plxShow->imagesList('data/images/'); 
    ?>
    </ul>
    
    Quelques explications sur l'utilisation de la fonction imagesList

    1) Le 1er paramètres est le chemin du dossier contenant les images à afficher
    2) Le 2ieme paramètre optionnel permet dire s'il faut afficher les miniatures ou les images taille réelle. pas défaut ce sont les miniatures qui sont affichées. Un clic sur l'image ouvrira en grand l'image.

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Interesting thought, i completely agree with your perspective

    comparatif simulation taux pret auto -taux pret auto differe selon la prise en compte ... calculent automatiquement le taux pour un prêt automobile donne.comparatif simulation taux pret auto
Connectez-vous ou Inscrivez-vous pour répondre.