Afficher les images d'une galerie Coppermine sur un autre site
Photographie
Par djib le samedi 11 mars 2006, 19:21 - Lien permanent
Je possède une galerie photo Coppermine et je désirais depuis quelque temps afficher des images aléatoire en provenance de cette galerie sur ce site.
Voici le script que je propose, à enregistrer sous le nom get_photo.php dans le même répertoire que votre galerie Coppermine. Ensuite si vous tapez http://magalerie.com/get_photo.php?album=1&nb=5 dans votre navigateur (adaptez à votre cas bien sûr) cela devrait vous afficher 5 photos aléatoire de l'album numéro 1. Si vous ne précisez pas nb le script affiche 4 images, et si vous ne précisez pas l'album, il affiche des images de n'importe quel album.
Ensuite sur la page ou vous voulez afficher une image aléatoire ajoutez à l'endroit ou vous voulez voir ces photos :
<?php $r=@file_get_contents("http://magalerie.com/get_photo.php?nb=1"); if ($r===false) { echo("Server down"); } else { echo $r;} ?>
Les images affichées sont de la classe get_photo si vous voulez personnaliser leur affichage avec une feuille de style CSS.
<?php // Coppermine Photo Gallery - get_image script // Based on the RSS feed by Dr. Tarique Sani - http://tariquesani.net/ // Adapted by djib to display a random photo - http://djib.fr // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. //- // Just put into the same directory as your coppermine installation //define('IN_COPPERMINE', true); define('INDEX_PHP', true); require('include/init.inc.php'); //How many items you want to show in your get_photo script if(isset($_GET['nb'])) { $thumb_per_page=$_GET['nb']; } else { $thumb_per_page = 4; } $thumb_count = 4; $lower_limit = 0; if(isset($_GET['album'])){ $album = $_GET['album']; } //If it is a numeric album get the name and set variables if (is_numeric($album)){ $album_name_keyword = get_album_name($album); $CURRENT_CAT_NAME = $album_name_keyword['title']; $ALBUM_SET = "AND aid IN (".(int)$_GET['album'].")".$ALBUM_SET; $album = 'random'; } //If the album is not set set it to lastup - this is the default if(!isset($album)){ $album = 'random'; } //Changes these to point to your site if the following is not giving correct results. $link_url = $CONFIG['ecards_more_pic_target']."displayimage.php?pos=-"; $image_url = $CONFIG['ecards_more_pic_target']."albums/"; $data = get_pic_data($album, $thumb_count, $album_name, $lower_limit, $thumb_per_page); foreach($data AS $picture) { $thumb_url = "$image_url$picture[filepath]$CONFIG[thumb_pfx]$picture[filename]"; $description = '<a href="' . $link_url . $picture['pid'] . '"><img class="get_photo" src="' . $thumb_url . '" alt="Photo aléatoire"/></a>'; echo $description; } ?>



Commentaires
j'ai suivis simplement ce qui a été dit et cela marche très bien!
merci
Merci pour ton commentaire. Et de rien
MERCI et bravo pour l'edition du script
seb
Merci. Je suis content de voir que ce script est utile.
Bonjour,
Super le script, merci !
Y-a-t-il un moyen pour lui spécifier qu'on veut une photo aléatoire du "dernier" album de la gallerie, sans devoir lui spécifier le numéro de l'album ?
Merci !!
Salut david.
Essaie avec album=lastup dans l'adresse. Si ça ne marche pas, je ne sais pas... Je n'ai plus de galerie Coppermine donc pas facile de tester...
Merci pour ce super script! c'est justement ce que je recherchais, je l'ai intégré sur mon forum phpbb, par contre pourriez m'indiquer une astuce pour l'intégrer autrement que par une iframe, le footer de ma template est en html, et je ne sais pas comment faire
voir en bas de page
http://www.retroplane.net/forum/ind...
Salut,
Merci pour ton commentaire.
Je pense que si tu fais ce que j'ai marqué dans l'article tu n'as pas besoin d'iframe :
<?php $r=@file_get_contents("[http://magalerie.com/get_photo.php?nb=1]"); if ($r===false) { echo("Server down"); } else { echo $r;} ?>Sinon tu peux toujours faire un #include, ce sera beaucoup plus rapide. C'est possible que si les le forum et les albums photos sont hébergés sur le même serveur, ce qui m'a l'air d'être le cas.
le problème, c'est que j'y connais vraiment pas assez pour savoir ou et comment faire les choses, est ce que c'est possible que je demande de l'aide sur le forum phpbb-fr.com en donnant l'url de ton blog et ton script, ça interresserait surement du monde, pour l'integrer dans les forum, mais si tu ne le souhaites pas je le comprendrais trés bien ;o)
Pour le forum de PHPBB, ça ne me dérange nullement.
Sinon comment as tu fait pour ajouter l'iframe ? Tu as bien dû modifier le code source non ? Si oui, c'est à cet endroit même que tu dois ajouter la ligne que moi je proposais
Bonjour,
pour l'instant j'ai mis ça
<p align="center"><IFRAME name="Aleatoire" scrolling="no" SRC="http://www.retroplane.net/album/ale..." border=0 frameborder=0 width=650></IFRAME></p>
aleatoire.php, c'est un fichier qui a ton code
<?php $r=@file_get_contents("http://www.retroplane.net/album/get..."); if ($r===false) { echo("Server down"); } else { echo $r;} ?>
donc si tu peux m'indiquer exactement comment mettre ce code à la place de mon iframe, merci
Si la page dans laquelle du as l'iframe est en PHP, tu peux mettre directement le contenu du fichier aleatoire.php dedans.
C'est le cas ?
Bonjour, hé non justement, ce n'est pas le cas, c'est le footer du forum, c'est un fichier de template en html, c'est pour ça que je coince
Ah...
La solution serait que je me penche un peu sur PHPBB car je connais pas du tout le fonctionnement. Je regarde ça ce week-end.
ok, merci, mais si ça doit te faire perdre du temps, dis le moi, et je demande sur le forum phpbb-fr, pour l'instant je n'ai pas demandé, pour pas faire de doulon, comme tu m'aides, merci encore
tant que j'y suis, comment centrer les images sur
http://www.retroplane.net/album/get...
Salut,
Je regarderai rapidement et si je vois que c'est en dehors de mes compétences je te le dirai
Salut,
Je viens de jeter un coup d'oeil à phpBB. Visiblement les templates utilisent des variables (les mots en majuscule entre des accolades).
Ces variables sont définies dans les fichiers php qui sont dans le répertoire includes.
Par exemple dans mon
overall_footer.tplj'ai une ligne :Powered by <a href="[http://www.phpbb.com/]" target="_phpbb" class="copyright">phpBB</a> © 2001, 2005 phpBB Group<br />{TRANSLATION_INFO}</span></div>et je trouve dans
page_tail.phpune ligne avec :Ce que tu devrais faire c'est donc de remplacer ton code iframe par une nouvelle variable du genre {MA_GALERIE} dans le fichier
overall_footer.tplet ensuite ajouter danspage_tail.phpune ligne du genre :'MA_GALERIE' => @file_get_contents("[http://magalerie.com/get_photo.php?nb=1]"),N'hésites-pas à me demander plus de détails...
Bonjour, tu me dis dans page_tail.php, une ligne du genre:??? ton message a été coupé?
et dans overall_footer.tpl, tu peux me donner la syntaxe exacte enplus de {MA_GALERIE}
désolé si je suis boulet
Pour la syntaxe dans le tpl il d'agit juste d'un truc du genre :
<div align="center">{MA_GALERIE}</div>Pour le .php tu te retrouves avec :
$template->assign_vars(array( 'TRANSLATION_INFO' => (isset($lang['TRANSLATION_INFO'])) ? $lang['TRANSLATION_INFO'] : ((isset($lang['TRANSLATION'])) ? $lang['TRANSLATION'] : ''), 'MA_GALERIE' => @file_get_contents("[http://magalerie.com/get_photo.php?nb=1]"), ... d'autres variables éventuellement );Voilà, j'espère que ça t'aidera un peu plus, c'est pas facile à distance
Bonjour,
je crois que je vais arrêter de t'embêter
j'ai bien mis
'MA_GALERIE' => @file_get_contents("http://www.retroplane.net/album/get..."),
au bon endroit dans page_tail.php
et <div align="center">{MA_GALERIE}</div>
dans overall_footer.tpl
et rien ne s'affiche
dans la source de la page en ligne on ne voit que
<div align="center"></div>
si tu veux verifier (c'est un forum de test)
http://planeur.retro.free.fr/
peut être qu'il faut mettre en plus ailleurs que dans page_tail.php
Essaie de mettre 'MA_GALERIE' => "test" voir si il t'affiche test sur la page...
tu dois pas être loin de la solution, on voit en effet marqué test
j'ai essayé de remplacer test par l'url, ça la met en texte mais ça n'affiche pas la page des vignettes
Ah, ont doit donc effectivement ne pas être très loin.
Je vais y re-réfléchir.
Bonsoir,
je me suis permis de demander de l'aide sur le forum phpbb-fr.com, je te tiens au courant si on me donne une solution, merci encore d'avoir passé du temps à m'aider
Je t'en prie.
Le forum de phpbb est sûrement la meilleure solution
Bonjour !
Merci pour ce script, c'est toujours très utile !!
Par contre j'ai un léger problème. Quand je tappe l'adresse dans mon navigateur : http://www.monsite.ch/galerie/get_p...
ça marche bien. Mais quand j'essaie de l'afficher sur mon site, ça ne marche pas :
http://www.monsite.ch/galerie/get_p...
Pourtant c'est bien la même adresse...
Est-ce que ça peut venir du fait que la galerie coppermine est dans un répertoire à part du site :
racine/coppermine et mon site se trouve à : racine/site/...
Je ne comprends pas, tu as envoyé deux fois le même lien Céline :S
Oui ce que je voulais dire c'est que c'est la même adresse que je tappe à où je veux mettre l'image sur mon site et dans l'url.
La différence c'est que si je tappes l'adresse direct dans l'URL, ça fonctionne. Mais quand je lui demande de l'appeller directement sur mon site.
Coucou,
Quand je tape l'adresse que tu as donnée, j'obtiens une erreur 404 (page introuvable). Je ne comprends donc pas pourquoi tu dis que ça fonctionne :S
Ah ok désolée j'ai pas mis la vrai adresse...
La voilà : http://www.lescabotins.ch/galerie/g...
Salut,
Est-ce que dans ta page Coppermine tu as bien mis :
<?php $r=@file_get_contents("[http://www.lescabotins.ch/galerie/get_photo.php?nb=1]"); if ($r===false) { echo("Server down"); } else { echo $r;} ?>Comme tu es sur le même serveur pour ta galerie et ton site, tu dois même pouvoir faire un :
Hello !
Oui j'ai bien mis ce code. Et j'ai essayé avec l'include. ça marche pas
Pour la ligne ajoutée, j'ai ce message :
Server down
et pour l'include :
Warning: main(include/debugger.inc.php): failed to open stream: No such file or directory in /home/httpd/vhosts/www.lescabotins.ch/web/galerie/include/init.inc.php on line 26 Fatal error: main(): Failed opening required 'include/debugger.inc.php' (include_path='.:/usr/local/php4/lib/php/') in /home/httpd/vhosts/www.lescabotins.ch/web/galerie/include/init.inc.php on line 26
Une idée ?
C'est étrange, les deux messages d'erreur ("Server Down" et "failed to open stream") montrent que le script n'arrive pas à trouver la page qui affiche les images... Je ne sais pas trop pourquoi :S
Essaie :
<?php $r=@file_get_contents("[http://www.lescabotins.ch/galerie/get_photo.php?nb=1]"); if ($r===false) { echo("Server down"); } else { echo $r;} ?>(la même chose qu'avant mais sans les crochets)
Si ça ne marche toujours pas je crains de ne pas pouvoir t'aider
Je viens de découvrir ton script, et je le trouve vraiment sympa et facile à mettre en place
Cependant, je rencontre un pb d'affichage sur mon site, pour l'une de mes 3 galeries coppermine :
Pour tenter de faire simple, je dispose donc de 3 galeries coppermine (nommons les A B et C), et je souhaite afficher une image aléatoire pour chacune, sur la page d'accueil de mon site.
Pour cela, sur la page .php de mon site, j'ai créé 3 tableaux, et dans chacun des tableaux, après avoir créé un fichier get_photo.php que j'ai disposé à la racine de A, B et C, j'ai rentré la ligne
<?php $r=@file_get_contents("http://magalerie.com/get_photo.php?..."); if ($r===false) { echo("Server down"); } else { echo $r;} ?>
en la modifiant à chaque fois pour que le fichier get_photo.php corresponde donc à la galerie voulue.
Tout marche parfaitement pour les galeries A et B, seulement pour C, les caractères "" s'affichent juste avant la miniature (qui apparait bien)...
Je ne comprends pas pourquoi car j'ai suivi exactement le mm procédé pour les 3 galeries.
J'ai même essayé avec une 4ème galerie, D, pour voir s'il n'y avait pas conflit avec ton script apparaissant 3 fois dans la page de mon site web, et je n'ai eu aucun problème avec D. Seulement avec la galerie C.
Une idée d'où cela pourrait venir ? Je précise que quand je tape dans mon navigateur http://magalerie.com/get_photo.php?...
les caractères "" n'apparaissent pas avant les miniatures.
Ils sont seulement sur mon site
Merci par avance pour ta réponse
Coucou Alysandra,
N'hésite pas à poster l'adresse de ton site se sera peut-être plus simple.
Est-ce que les trois galeries sont sur le même site ? Auquel cas je pense que tu n'as besoin du fichier get_photo.php qu'une seule fois.
Enfin bref, je pense que le problème peut venir d'un problème d'encodage. Est-ce que ta galerie C commencerait pas par hasard par un caractère accentué ou un autre caractère exotique ?
Si ce n'est pas ça, je ne sais pas trop...
Hello,
Mon site se trouve à l'adresse: http://lazy-shades.net
Rien n'est écrit avant ou après.
Le nom de la galerie qui me pose problème n'a rien d'exotique, il s'agit de "Portfolio"
Quant au tout, voilà comment c'est organisé sur le ftp:
- à la racine, un dossier "Lazy-Shades", contenant le site en lui mm.
- à la racine, un dossier "Galeries", regroupant lui-même 4 autres dossiers pour mes 4 galeries: dont un dossier "Scans" pour la galerie A avec get_photos à la racine, un dossier "WoF" pour la galerie B avec get_photos et enfin, un dossier "Portfolio" pour la galerie C avec get_photos.
Selon tes explications pour le script, j'ai bien besoin de 3 get_photos (que j'ai décidé de renommer get_pics va savoir pourquoi :p), surtout qu'en plus, si effectivement on peut n'en mettre qu'un seul, ça voudrait dire que les miniatures affichées sur mon site proviendraient de n'importe quelle galerie au hasard... Ce que je ne veux pas
Si tu jettes un oeil sur mon site, tu verras que je tiens à ce que ce soit bien une miniature pour chacune des galeries 
J'espère que je suis claire, lol.
Enfin bref, de toute façon le problème n'est pas là... Ca marche pour toutes les galeries sauf la C
Comme je l'ai dit hier, les caractères n'apparaissent pas quand je tape : http://portfolio.lazy-shades.net/ge...

Je penchais aussi pour un problème d'encodage pour cette galerie C, seulement, je ne vois pas trop d'où il pourrait venir
Un rapport peut-être avec le jeu de caractères utilisé dans la config de coppermine (unicode utf-8), mais bon, toutes mes galeries sont configurées de la mm façon...
Si j'ai du courage, j'essayerai demain (ou d'ici la fin du we) d'installer une galerie E avec le contenu de ma C mais sous un autre nom, pour voir si ça bug
C'est moi où je ne sais pas faire court ?
Bonjour,
Je viens de voir un truc rigolo. Quand j'affiche le code source de la page : http://portfolio.lazy-shades.net/ge... je vois bien 4 caractères étranges avant le premier lien.
J'ai du mal à voir d'où ça peut venir.
Vérifie bien que tu n'as pas d'espace ou autre caractère qui traîne en dehors des balises
<?phpet?>. Essaie sinon d'ajouter$description="";sur une ligne juste avant le foreach à la fin du fichier.Salut !
Bon, j'ai essayé plein de choses ce week-end, certaines que tu m'as dit de faire, d'autres qu'un ami a voulu tester... rien n'y a fait
Donc je vais soit devoir oublier l'idée de mettre une image aléatoire pour ma galerie C, soit refaire entièrement cette galerie sur une galerie vierge
En tout cas, ça va attendre un petit peu
Le site va rester qq jours avec ce petit pb de caractères... Sa mise à jour est plus importante pour le moment.
Je te remercie pour tes bons conseils, et pour ce script que tu nous as proposé
Ben je t'en prie. C'est quand même étrange comme problème... franchement à part le coup des "faux espaces" dans un fichier je vois vraiment pas...
Très bon script. Cependant, serait-ce possible de montrer les derniers albums mis à jour? Avec pour lien thumbnails.php?album=xx ?
Bonjour,
Le script qui a donné naissance au script ci-dessus est ce que tu cherches je pense. En effet il permet d'ajouter un flux RSS à un site Coppermine.
Par contre je n'ai plus le script original sous la main. Aide toi de l'en-tête de mon script pour le retrouver.
De rien, ça me fait plaisir de voir qu'il est utilisé.
Pile ce qu'il me fallait!!!

Merci bien
Une petite question: est-il possiblede choisir d'afficher les photos d'une catégorie entiere?
J'ai mis
if(isset($_GET['cat'])){ $cat = $_GET['cat']; }mais je pense pas que ce soit suffisant!
Merci Cherry.
Je suis désolé je n'ai plus de Coppermine qui tourne chez moi donc je ne peux pas faire de tests. Je pense que ce que tu as marqué ne suffit pas mais je ne sais pas que te dire d'ajouter de plus. Désolé.
Merci pour ce script ! Je cherché depuis plusieurs ! et sans résultat ! ^^ Merci
De rien !
Salut ! J'espère que tu trouveras le temps de répondre
Le sujet a été abordé plusieurs fois dans ce topic mais je n'ai jamais trouvé la réponse :s
Il s'agit d'afficher à la place d'images aléatoires les vignettes des derniers albums, imaginons les 5 derniers... Que faut-il que je modifie dans ton script ?
Merci ^^
Rom, pour le dernier album seulement il faut faire
album=lastup. Pour les 5 derniers je ne sais pas faire.Par contre tu peux peut-être t'inspirer du flux RSS pour Coppermine que tu trouveras ici : http://tariquesani.net/rss.phps
Merci beaucoup
De rien !
Encore merci et bonne année !
Bonjour,
Ça doit être possible. La variable $picture doit contenir ce genre d'informations.
Essaie de rajouter la ligne :
après la ligne
foreach($data AS $picture) {à la fin du code.
Tu pourras alors voir toutes les propriétés et leur valeurs pour les photos. Si par exemple tu vois :
c'est que $picture["name"] aura pour valeur "Ma photo de vacances". Si donc tu ajoutes :
à la place de la ligne que je t'ai fait rajouter, tu auras le nom de ta photo qui sera affiché pour chaque photo.
OK ?
Merci djib ! ça marche comme sur des roulettes
De rien. Je suis content que ça marche !
De rien. Je suis content que ça marche !
Par contre le saut de ligne " " ne marche pas car j'aurai aimé afficher les dit nom d'image en dessous de celle ci et non a la suite...
merci
En faisant un saut de ligne simple :
echo $description;
echo '<br /> ';
echo $picture"title";
ça met aussi les vignettes l'une en dessous des autres et non uniquement leur titres...
c'est bon ! j'ai bricolé dans le html et non dans le script et tout est bon...
Super !
Bonjour,
Bravo et merci pour ce script génial. J'ai réussi à l'intégrer facilement dans mon cms à l'adresse http://www.etoileb.com.
Or j'ai un site etoile-b.com sur lequel sont les cliparts et là ça ne fonctionne pas est-ce à cause du tiret ? les images ne sont pas visibles et l'adresse en lien est http://www/etoile-b.com au lieu de www.etoile-b.com savez vous comment je pourrais modifer le script pour obtenir la bonne adresse.
Pour voir le résultat :
http://www.etoile-b.com/articles.ph...
Meilleurs remerciements
Etoileb, tu n'aurais pas un problème dans la configuration de ta galerie photo etoile-b.com ? Je pense que tu as dû rentrer un / au lieu d'un . dans un écran de configuration. Je ne pense pas que ce soit le script qui en soit responsable (j'ai aussi un tiret dans l'adresse de mon site et ça marchait bien !)
Merci beaucoup !
Sa fessait pas moins de trois jours que je chercher une solution et grave a vous en deux minute j'avais fine
Merci je reviendrais.
Merci à toi, et n'hésite pas à revenir
Bonjour et merci pour le script,,,,,,,,,,,,, super efficace.
Pourriez vous me dire comment augmenter la taille des vignettes car elles apparaissent trop petites alors qu'il y a de la place dans la #div.
merci
Merci Patogaz.
Il s'agit de la même taille que celle de tes vignettes sur Coppermine. Je ne sais pas si il est possible de les aggrandir...
ok, merci
De rien
Coucouuu ! Ton tuto est superbe !!
Sauf que jai un problème, il ne veut pas marcher ... :s
Ca me met : Server Down ...
J'ai la toute dernière version de Coppermine, la 18 ... Est-ce à cause de ça ??
C'est possible que ce soit à cause de ça. Il est plus probable que tu aies mal écris l'adresse de ton site.
Huum, je ne crois pas avoir mal écrit l'adresse ...
Voilà ce que jai mis ....
<?php $r=@file_get_contents("http://gossipgirlworld.org/gallery/..."); if ($r===false) { echo("Server down"); } else { echo $r;} ?>
Bonjour,
Essaie d'enlever le @ devant le file_get_contents. Il t'affichera surement un message d'erreur. Poste le ici.
Bonsoir, j'ai fais ce que tu m'as dit, et voilà ce qu'il m'affiche :
Warning: file_get_contents() function.file-get-contents: URL file-access is disabled in the server configuration in /home/ggworld/public_html/main.html on line 44
Warning: file_get_contents(http://gossipgirlworld.org/gallery/...) function.file-get-contents: failed to open stream: no suitable wrapper could be found in /home/ggworld/public_html/main.html on line 44
Visiblement ton hébergeur ne te permet pas d'accéder à des fichiers distants, c'est à dire des fichiers d'autres sites. Soit il faut changer la configuration du serveur (ce qui n'est pas forcément faisable selon l'hébergeur) soit il faut trouver une autre solution. Est-ce que le site où tu héberges gossipgirlworld.org et le site où tu veux afficher les photos sont sur le même serveur ?
Normalement oui, je vais demander au webmaster
Merci de ton aide :DD
Au plaisir !
Merci pour ce script. J'ai relevé un problème lorsque les noms de fichiers contiennent des accents. Voici le code corrigé:
$thumb_url = "$image_url$picture[filepath]$CONFIG[thumb_pfx]";
$thumb_url .= urlencode($picture[filename]);
à la place de
$thumb_url = "$image_url$picture[filepath]$CONFIG[thumb_pfx]$picture[filename]";