Come creare una galleria fotografica usando l'API di Flickr

Flickr è, senza dubbio, il sito Web di fotografia più grande e migliore su Internet. Ci sono un sacco di widget, distintivi e plugin che ti permettono di mostrare le tue ultime foto di Flickr sul tuo sito web, ma faremo un ulteriore passo avanti direttamente su Flickr e integrando il tuo photostream nel tuo sito web, offrendoti una galleria fotografica che è un gioco da ragazzi per l'aggiornamento.


Creeremo questa galleria fotografica utilizzando l'API di Flickr e phpFlickr. Se le lettere "A, P & I" sono sufficienti per colpire la paura nel tuo cuore, non ti preoccupare, la prenderemo lentamente e forniremo esempi di codice completi che è possibile copiare.

Flickr ha anche recentemente lanciato The App Garden, che è una vetrina di strumenti, giocattoli e siti che utilizzano l'API di Flickr per offrire qualcosa di utile o divertente. Una volta che hai imparato a usare l'API, puoi lasciare che la tua immaginazione crei un nuovo modo di usarlo e inviare la tua app.

Per questo tutorial presumo di avere già un account Flickr e di accedere a un server che esegue PHP e PEAR.

Il contorno

  • Ottieni una chiave API di Flickr
  • Scarica i file phpFlickr
  • Costruisci una pagina della galleria per mostrare le nostre miniature (con impaginazione)
  • Crea una pagina di foto per mostrare le nostre foto (con navigazione precedente e successiva)

Passaggio 1: Ottieni una chiave API Flickr

La tua chiave API è la tua serie unica di numeri e lettere che ti garantiscono l'accesso ai servizi di Flickr. Vai qui: http://www.flickr.com/services/apps/create/apply/

Qui devi decidere se utilizzerai Flickr per scopi commerciali o non commerciali. Flickr fornisce buone spiegazioni su quale scegliere, è probabile che avrai bisogno di una chiave API non commerciale, che è quello che sto scegliendo per questa demo.

Segui i passaggi e inserisci tutti i dettagli.

Dovresti quindi presentarti la tua chiave univoca che apparirà come una serie di numeri casuali e lettere in questo modo:

Vedrai anche un numero chiamato "Segreto"; ignoralo per ora. Per questo esercizio abbiamo solo bisogno della chiave; prendetene nota come ne avremo bisogno presto.

Se si utilizza l'API per creare uno strumento o un sito più recente in seguito, è possibile che si desideri inviare e mettere in evidenza ciò che si è creato nell'App Garden di Flickr. Puoi fare clic su "Modifica dettagli app" per inserire le informazioni.

Presta particolare attenzione ai suggerimenti e ai consigli forniti nei Termini d'uso dell'API e alle Norme della community, se la abusi, la perderai.

Adesso eccoci alle cose eccitanti ...

Passaggio 2: scarica phpFlickr 

phpFlickr è un progetto di Dan Coulter. È una classe scritta in PHP che funge da wrapper per l'API di Flickr. I file elaborano i dati forniti da Flickr e restituiscono gli array in PHP, che utilizziamo per visualizzare le nostre foto

Dobbiamo scaricare i file che includeremo in seguito nella nostra pagina Web e faremo tutto il lavoro complicato per noi. Visita phpflickr.com o vai direttamente alla pagina di download su Google Code. In questa demo, utilizzeremo il file zip: phpFlickr-2.3.1 (zip)

Scarica e decomprimi. Per questo tutorial, abbiamo solo bisogno della cartella PEAR e del file phpFlickr.php. Carica i file nella tua directory web

Passaggio 3: installazione di base e configurazione semplice  

Ora abbiamo tutto ciò di cui abbiamo bisogno per connetterci con Flickr e recuperare le nostre foto. Creeremo due pagine: una per mostrare le nostre miniature e una per mostrare la foto. Tutto il codice sarà disponibile come pagine complete alla fine del tutorial.

Questi esempi di codice funzionano tutti in base al fatto che i file si trovano nella directory principale del server o nella stessa cartella. Prima di ogni altra cosa, dobbiamo creare una cartella cache affinché phpFlickr funzioni correttamente. Crea una cartella chiamata "cache" nella tua directory web e dargli permessi scrivibili (CHMOD 777).

Ora costruiremo una pagina che mostra le nostre miniature e ha un semplice cercapersone. Nella galleria di esempio, questo è index.php - e assomiglia a questo.

Prima di andare oltre, dobbiamo impostare due variabili principali nel file config.php.

Apri config.php. Vedrai che sta solo chiedendo due cose: la tua chiave API e il tuo nome utente Flickr.

Innanzitutto, inserisci la tua chiave API: il lungo insieme casuale di numeri e lettere che ti hanno dato in precedenza Flickr. Mantieni le tue informazioni all'interno delle virgolette.

// inserisci la tua chiave API $ key = "INSERISCI QUI IL TUO API FLICKR";

Ora per il tuo nome utente Flickr; questo non è il tuo nome utente di accesso a Yahoo o il tuo screename su Flickr, ma il nome utente che usi per Flickr stesso. Per ricontrollare, accedi a Flickr e guarda la parte superiore della pagina dove è scritto 'Firmato come ...' - questo è il tuo nome utente. Quindi dichiariamo il nostro nome utente come variabile:

// inserisci il tuo nome utente Flickr $ username = "IL TUO FLICKR NOME UTENTE QUI";

Salva le modifiche in config.php e carica - non dovresti aver bisogno di nuovo quel file.

Passaggio 4: creazione della pagina Miniature

Alla pagina stessa. Ecco una ripartizione di ciò che stiamo facendo nella parte superiore della pagina, che indica tutto pronto per l'azione:

Stiamo andando a includere alcuni link precedenti e successivi con un piccolo pezzetto di codice più in basso nella pagina. Le miniature che mostreremo dipenderanno dalla pagina in cui ci troviamo, quindi eseguiremo una semplice istruzione if che catturerà il nostro numero di pagina. Se c'è una query 'fpage' nell'URL, usa quello. Altrimenti, siamo alla prima pagina.

 

Successivamente includiamo il file core phpFlickr che ha tutto ciò di cui abbiamo bisogno per comunicare con Flickr.

// include il file core require_once ('phpFlickr.php');

Ora apriamo una nuova classe dal file phpFlickr utilizzando la nostra chiave API che abbiamo ottenuto in precedenza.

 // Attiva la classe phpFlickr principale $ f = new phpFlickr ($ key);

phpFlickr utilizza la memorizzazione nella cache per accelerare il processo. Esistono opzioni per l'utilizzo di una tecnica di database, ma per questa esercitazione useremo l'opzione della cartella cache più semplice. Abbiamo bisogno di una cartella chiamata 'cache' che sia scrivibile, il che significa che il sistema ha accesso ad esso e può alterarne il contenuto. Per fare ciò, impostare le autorizzazioni delle cartelle su 777 tramite il programma FTP. Quindi aggiungiamo questa linea per attivarla:

$ f-> enableCache ("fs", "cache");

Chiamiamo il metodo people_findByUsername che restituisce un array:

$ result = $ f-> people_findByUsername ($ username);

Da quell'array, abbiamo anche bisogno del tuo ID utente univoco (il tuo ID di Flickr che assomiglia a questo: 11221312 @ N00, dichiarato qui come $ nsid) che otteniamo così:

// cattura il nostro ID utente univoco dall'array $ result $ nsid = $ result ["id"];

Successivamente, chiamiamo il metodo people_getPublicPhotos, che restituisce di nuovo un array che chiameremo $ foto. In questa riga, stiamo anche passando attraverso il nostro id che abbiamo ottenuto nella riga sopra ($ nsid). NULL si riferisce all'opzione "extra" di cui non ci occupiamo in questo momento. Stiamo anche indicando il numero di miniature che vogliamo visualizzare (21) e stiamo passando attraverso la pagina per iniziare ($ page) che si riferisce alla variabile $ page dalla parte superiore della pagina:

 $ foto = $ f-> people_getPublicPhotos ($ nsid, NULL, NULL, 21, $ page);

L'ultimo bit che abbiamo bisogno di impostare la pagina è un po 'di informazioni di cui abbiamo bisogno per il paging per funzionare. Accediamo all'array $ photos creato in precedenza e estrapiamo il numero totale di pagine, oltre alla quantità totale di foto nel nostro photostream:

$ pagine = $ foto [foto] [pagine]; // restituisce il numero totale di pagine $ totale = $ foto [foto] [totale]; // restituisce quante foto ci sono in totale?>

Nota che stiamo chiudendo la sezione php qui con?> Ora abbiamo tutto ciò che serve per ottenere le prime 21 miniature dal nostro photostream di Flickr e visualizzarle. Continueremo ora con la pagina, aggiungendo un po 'di html, usando PHP per mostrare le immagini e includendo alcuni semplici collegamenti di paging. Iniziamo scrivendo un html di base.

     Nettuts Flickr Gallery Demo   

La mia galleria fotografica

Niente di straordinario qui; semplicemente impostando l'html e iniziando un'area per le miniature. Il prossimo passo è riempire il nostro div chiamato "pollici" con le nostre miniature in questo modo:

Nota che stiamo aprendo di nuovo php con

Useremo un ciclo foreach per scorrere l'array $ photos e arrivare all'elemento foto ($ photo), che contiene le informazioni di cui abbiamo bisogno per le miniature.
Vedi i commenti nel codice per una spiegazione di cosa sta succedendo:

 buildPhotoURL ($ photo, "Square"). "\" width = \ "75 \" height = \ "75 \" alt = \ "$ photo [titolo] \" /> "; // chiudi link echo" "; // end loop?> 

Abbiamo quasi finito con la pagina principale. È probabile che tu abbia più di 21 foto nel tuo Photostream; quindi dovremo aggiungere un po 'di paging con alcuni link precedenti e successivi in ​​modo che possiamo passare alle 21 miniature successive. I link hanno questo aspetto:

 Questo codice si basa sulla linea che avevamo in cima chiamando la variabile $ page. Quando il nostro codice chiama le foto da Flickr, usa anche la variabile $ page per sapere da dove cominciare - guarda indietro alla riga dove abbiamo chiamato "people_getPublicPhotos" e vedrai che abbiamo passato anche la variabile $ page . Quel valore è la spina dorsale di questo piccolo accordo di paginazione. Apriremo un paragrafo con l'id di 'nav', apriremo i tag PHP e definiremo le variabili 'back' e 'next':

Quindi gestiamo i link 'Precedente' e 'Successivo' effettivi controllando che non siamo nella prima o nell'ultima pagina, nella chiusura di php e chiudiamo il tag 'p'.

// se non è la prima pagina se ($ page> 1) echo "« prev"; // se non ultima pagina se ($ page! = $ pages) echo"Il prossimo »";?> 

Ora ci riferiamo ad alcuni valori che avevamo all'inizio per mostrare un po 'di più su dove siamo nella galleria:

 Pagina $ pagina di $ pagine

"; eco"

$ totale foto nella galleria

";?>

E per rispettare i termini di Flickr e terminare la pagina, aggiungeremo:

 

Questo prodotto utilizza l'API di Flickr ma non è approvato o certificato da Flickr.

Questo è tutto ciò di cui abbiamo bisogno per produrre una pagina che visualizzi le ultime 21 foto come miniature con una semplice navigazione Prev / Next. Proprio come la home page sulla demo. Successivo: la pagina che mostra la nostra foto.

Passaggio 5: crea una pagina per visualizzare singole foto

Ora che abbiamo le nostre miniature, abbiamo bisogno di una pagina per mostrare l'immagine completa quando si fa clic su uno. Ecco il codice per photo.php, che collega le miniature. Iniziamo questa pagina in modo simile alla pagina dell'indice, ma anziché il numero di pagina, vogliamo l'id della foto che è stata passata nell'URL dalla nostra pagina di anteprima:

enableCache ("fs", "cache");

Ora abbiamo bisogno di raccogliere alcune informazioni da Flickr sulla foto come il numero di identificazione della foto, le sue dimensioni, dove si trova in relazione ad altre foto (contesto) e l'url dell'immagine.

// accede al metodo getInfo, passando l'id della foto $ photo = $ f-> photos_getInfo ("$ id", $ secret = NULL); // passa l'id della foto al metodo getSizes per ottenere le dimensioni della nostra immagine $ photosize = $ f-> photos_getSizes ("$ id", $ secret = NULL); // vogliamo le dimensioni della dimensione media che otteniamo dall'array $ photosize nella riga precedente $ size = $ photosize [3]; // di nuovo passando l'id della foto attraverso otteniamo il contesto, che ci dice quali foto sono prima e dopo l'attuale id $ context = $ f-> photos_getContext ("$ id"); // il metodo buildPhotoURL fa praticamente quello che ti aspetteresti: crea l'URL della foto, passiamo in $ foto e la dimensione richiesta per restituire l'URL dell'immagine, ad es. http://farm4.static.flickr.com/3108/3175330082_0bf4b22e47.jpg $ photoUrl = $ f-> buildPhotoURL ($ photo, "Medium"); // Questo ci dice chi è il proprietario della foto. // Questa è una parte importante da includere perché vogliamo che la nostra galleria mostri solo le nostre foto e non tiri le foto degli altri utenti - più di una spiegazione a riguardo nelle note alla fine $ owner = $ photo ["owner"] ["nome utente"]; // Vogliamo solo la foto se appartiene a noi - quindi se il nostro nome utente è lo stesso del proprietario della foto ... scriveremo la pagina e mostreremo // maggiori informazioni su questo alla fine del tutorial se ($ username == $ owner) ?>

Ora siamo pronti per il resto della pagina con i bit succosi.

       <?php // We access the $photo array and grab the title of the photo to use as the document title echo $photo[title]  ?>     

Galleria fotografica

$ Foto [titolo]"; // La foto stessa, riconoscerai $ photoUrl da sopra dove abbiamo creato l'url della foto, stiamo anche accedendo alla matrice $ size che abbiamo preparato in precedenza per ottenere la larghezza e l'altezza // e il titolo ancora una volta // Faremo anche il link alla versione su Flickr per echo di buona misura ""; echo "\"$photo[title]\""; echo" "; // Descrizione della foto echo"

$ Foto [descrizione]

";?>

Ora abbiamo la nostra foto ... e abbiamo quasi finito. Quest'ultimo bit può sembrare un po 'complicato, ma non lasciatevi scoraggiare. Ha a che fare con il contesto della foto, come in, la foto che viene dopo nello stream e quale era precedente ad essa. Proprio come vedi nelle gallerie di Flickr delle persone. La ragione per cui sembra che ci sia un sacco di codice è che, per far funzionare al meglio, dobbiamo controllare se c'è una foto prima o dopo la foto corrente. Se non c'è, non vogliamo un link, invece inseriamo il testo normale e un'immagine fittizia (noimg.png).

 
"; else // se non - mostra l'immagine vuota del filler echo"\"No";; // se c'è una foto successiva ... if ($ context ['nextphoto'] ['id']) echo""; else // se non - mostra l'immagine vuota del filler echo"\"No"; ; eco"
"; eco"

"; // se c'è un link precedente, scrivi un link - se no, solo il testo if ($ context ['prevphoto'] ['id']) echo" «Prec"; else echo "« Indietro ";; echo" | "; // se c'è un link successivo, scrivi un link - se no, solo il testo if ($ context ['nextphoto'] ['id']) echo" Successivo »"; else echo "Successivo» ";; eco"

";?>

E per terminare la pagina, includeremo un link alla galleria principale, un po 'di testo per Flickr e chiudiamo l'html.

«Galleria principale

Questo prodotto utilizza l'API di Flickr ma non è approvato o certificato da Flickr.

Sostenere! Un'altra cosa ... finiamo la frase if di poco prima che l'html iniziasse ... di nuovo, vedi le note alla fine sul perché lo facciamo.

 

E il gioco è fatto. Una galleria fotografica per il tuo sito web, alimentata dal tuo account Flickr. Dai un'occhiata alla pagina demo per vedere come appare con un po 'di markup extra e styling aggiunti. Questa è un'implementazione molto basilare dell'API di Flickr; si limita a graffiare la superficie di quello che puoi fare, ma fornisce una bella galleria fotografica per il tuo sito / blog che puoi facilmente aggiornare e mantenere tramite Flickr.

NOTE & EXTRA

Divertiti e mostraci cosa ti viene in mente!