Slik lager du et fotogalleri ved hjelp av Flickr API

Flickr er uten tvil den største og beste fotografisiden på internett. Det er mange widgets, merker og plugins som lar deg vise de nyeste Flickr-bildene dine på nettstedet ditt, men vi tar det et skritt videre ved å tappe rett inn i Flickr og integrere fotostrømmen din på nettstedet ditt, og gir deg et fotogalleri som Det er en bris å oppdatere.


Vi lager dette fotogalleriet ved hjelp av Flickr API og phpFlickr. Hvis bokstavene "A, P & I" er nok til å treffe frykt i hjertet ditt, ikke bekymre deg, vi tar det sakte og gir full kodeeksempler som du kan kopiere.

Flickr har også nylig lansert The App Garden, som er et showcase av verktøy, leker og nettsteder som bruker Flickr API for å tilby noe nyttig eller morsomt. Når du får tak i å bruke API, kan du la fantasien fremkalle en ny måte å bruke den på, og sende inn appen din.

For denne opplæringen antar jeg at du allerede har en Flickr-konto, og tilgang til en server som kjører PHP og PEAR.

Oversikten

  • Få en Flickr API-nøkkel
  • Last ned phpFlickr-filene
  • Bygg en galleriside for å vise våre miniatyrbilder (med paginering)
  • Lag en fotoside for å vise bildene våre (med forrige og neste navigasjon)

Trinn 1 - Få en Flickr API-nøkkel

Din API-nøkkel er din egen unike serie med tall og bokstaver som gir deg tilgang til Flickrs tjenester. Gå hit: http://www.flickr.com/services/apps/create/apply/

Her må du bestemme om du skal bruke Flickr for kommersielle eller ikke-kommersielle formål. Flickr gir gode forklaringer på hva du bør velge, sjansen er at du trenger en ikke-kommersiell API-nøkkel, som er det jeg velger for denne demoen.

Følg trinnene og fyll ut alle dine detaljer.

Du bør da bli presentert med din unike nøkkel som vil vises som en serie av tilfeldige tall og bokstaver som dette:

Du ser også et nummer som heter "Secret;" ignorere det for nå. For denne øvelsen trenger vi bare nøkkelen; noter det som vi trenger det snart.

Hvis du bruker API-en til å bygge et kult verktøy eller et nettsted senere, kan det være lurt å sende inn og fungere som du bygger i Flickr App Garden. Du kan klikke på "Rediger appdetaljer" for å fylle ut infoen.

Vær særlig oppmerksom på tipsene og rådene som er gitt i API-vilkårene og retningslinjene for fellesskapet, hvis du misbruker det, mister du det.

Nå videre til spennende ting ...

Trinn 2 - Last ned phpFlickr 

phpFlickr er et prosjekt av Dan Coulter. Det er en klasse skrevet i PHP som fungerer som en wrapper for Flickr API. Filene behandler dataene som tilbys av Flickr og returnerer arrayer i PHP, som vi bruker til å vise våre bilder

Vi må laste ned filene som vi senere vil inkludere i vår nettside, og vil gjøre alt det kompliserte arbeidet for oss. Besøk phpflickr.com eller hoppe direkte til nedlastingssiden på Google Code. I denne demoen bruker vi zip-filen: phpFlickr-2.3.1 (zip)

Last ned og pakke ut den. For denne opplæringen trenger vi bare PEAR-mappen og phpFlickr.php-filen. Last opp filene til webkatalogen din

Trinn 3 - Grunnleggende oppsett og enkel konfigurasjon  

Nå har vi alt vi trenger for å koble sammen med Flickr og hente våre bilder. Vi lager to sider: en for å vise miniatyrbildene våre og en for å vise bildet. Alle koden vil være tilgjengelige som komplette sider på slutten av opplæringen.

Disse kodeeksemplene fungerer alle på grunnlag av at filene dine er på roten til serveren din - eller alt i samme mappe. Før alt annet, må vi opprette en hurtigmappe for at phpFlickr skal fungere skikkelig. Opprett en mappe som heter 'cache' i webkatalogen din og gi den skrivbare tillatelser (CHMOD 777).

Nå skal vi bygge en side som viser miniatyrbildene våre og har litt enkel personsøking. I eksempelgalleriet er dette index.php - og ser slik ut.

Før vi går videre, må vi sette to hovedvariabler i config.php-filen.

Åpne config.php. Du ser at det bare ber om to ting: API-nøkkelen din og ditt Flickr-brukernavn.

Først legg inn API-nøkkelen din - det lange tilfeldige settet med tall og bokstaver du ble gitt tidligere av Flickr. Hold informasjonen din inne i sitatmerket.

// sett inn API-nøkkelen $ key = "Skriv inn FLICKR API KEY HERE";

Nå for ditt Flickr brukernavn; Dette er ikke ditt Yahoo-brukernavn eller Flickr skjermnavn - men brukernavnet du bruker til Flickr selv. For å dobbeltsjekke, logg inn på Flickr og se på toppen av siden der det står "Signed in as ..." - det er brukernavnet ditt. Så la oss erklære vårt brukernavn som en variabel:

// skriv inn ditt Flickr brukernavn $ username = "DITT FLICKR USERNAME HERE";

Lagre endringene til config.php og last opp - du trenger ikke den filen igjen.

Trinn 4 - Bygg miniatyrbildesiden

På selve siden. Her er en sammenfatning av hva vi gjør øverst på siden, som cues opp alt klart for handlingen:

Vi skal inkludere noen tidligere og neste koblinger med en liten kode lenger ned på siden. Miniatyrbildene vi skal vise, avhenger av hvilken side vi er på, så vi kjører en enkel hvis setning som tar tak i vårt sidetal. Hvis det er et "fpage" -spørsmål i url, bruk det. Hvis ikke, er vi på side en.

 

Deretter følger vi kjernen phpFlickr-filen som har alt vi trenger i det kommuniserer med Flickr.

// inkludere kjernefilen require_once ('phpFlickr.php');

Nå brann vi opp en ny klasse fra phpFlickr-filen ved hjelp av vår API-nøkkel som vi fikk tidligere.

 // Brann opp hoved phpFlickr klassen $ f = ny phpFlickr ($ key);

phpFlickr bruker caching for å øke hastigheten på prosessen. Det finnes muligheter for å bruke en databaseteknikk, men for denne opplæringen vil vi bruke det enklere cachemappen alternativet. Vi trenger en mappe kalt "cache" som er skrivbar, noe som betyr at systemet har tilgang til det og kan endre innholdet. For å gjøre dette sett mappens tillatelser til 777 via ditt FTP-program. Da legger vi til denne linjen for å aktivere den:

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

Vi kaller people_findByUsername-metoden som returnerer en matrise:

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

Fra dette feltet trenger vi også ditt unike bruker-ID (ditt Flickr-ID som ser slik ut: 11221312 @ N00, erklært her som $ nsid) som vi får slik:

// Ta tak i vårt unike bruker ID fra $ result array $ nsid = $ result ["id"];

Deretter kaller vi people_getPublicPhotos-metoden, som igjen returnerer en matrise som vi vil ringe til $ photos. I denne linjen passerer vi også gjennom vårt id som vi fikk i linjen ovenfor ($ nsid). NULL refererer til alternativet 'extras' som vi ikke er opptatt av akkurat nå. Vi oppgir også antall miniatyrbilder vi vil vise (21), og passerer gjennom siden for å starte på ($ side) som relaterer seg til $ side-variabelen fra toppen av siden:

 $ photos = $ f-> people_getPublicPhotos ($ nsid, NULL, NULL, 21, $ side);

Den siste biten vi trenger for å sette opp siden, er litt info vi trenger for personsøkingen til å fungere. Vi får tilgang til $ fotorabellen vi opprettet over, og trekker ut det totale antall sider, pluss total mengde bilder i vår fotostrøm:

$ sider = $ bilder [bilder] [sider]; // returnerer totalt antall sider $ totalt = $ bilder [bilder] [totalt]; // returnerer hvor mange bilder det er totalt?>

Legg merke til at vi lukker php-seksjonen herfra med?> Nå har vi alt vi trenger for å få de første 21 miniatyrbildene fra Flickr-fotostrømmen og vise dem. Vi fortsetter med siden, legger til noen html, bruker PHP til å vise bildene, og inkluderer noen enkle personsøkingskoblinger. Så la oss begynne med å skrive noen grunnleggende html.

     Nettuts Flickr Gallery Demo   

Mitt galleri

Ikke noe helt vanlig her; bare sette opp html og starte et område for miniatyrbildene. Det neste trinnet er å fylle vår div som heter 'tommelen' med våre miniatyrbilder som slik:

Merk at vi åpner php igjen med

Vi bruker en foreach-loop for å løpe gjennom $ photos-arrayen og for å komme til bildeelementet ($ photo), som inneholder informasjonen vi trenger for miniatyrbildene.
Se kommentarene i koden for en forklaring på hva som skjer:

 buildPhotoURL ($ photo, "Square"). "\" width = \ "75 \" height = \ "75 \" alt = \ "$ bilde [title] \" /> "; / / lukk lenke ekko" 

Vi er nesten ferdige med hovedsiden. Sjansen er at du har mer enn 21 bilder i fotostrømmen din; så vi må legge til noen personsøk med noen tidligere og neste koblinger slik at vi kan flytte til de neste 21 miniatyrbildene. Lenkene ser slik ut:

 Denne koden er avhengig av linjen vi hadde øverst som kalte $ side-variabelen. Når koden vår samler i bildene fra Flickr, bruker den også $ side-variabelen til å vite hvor du skal begynne - se tilbake på linjen der vi kalte 'people_getPublicPhotos', og du vil se at vi passerte i $ side-variabelen der også . Den verdien er ryggraden i dette lille personsøkingsarrangementet. Vi åpner et avsnitt med ID for "nav", åpner PHP-kodene, og definerer våre "tilbake" og "neste" variabler:

Deretter håndterer vi de faktiske linkene "Forrige" og "Neste" ved å sjekke at vi ikke er på den første eller siste siden, lukk php og lukk p-merket.

// hvis det ikke er den første siden hvis ($ side> 1) echo "« prev"; // hvis ikke siste side hvis ($ side! = $ sider) echo"neste »";?> 

Nå refererer vi tilbake til noen verdier vi hadde i begynnelsen for å vise litt mer om hvor vi er i galleriet:

 Side $ side av $ sider

"; ekko"

$ totalt antall bilder i galleriet

";?>

Og for å overholde Flickrs vilkår og avslutte siden, legger vi til:

 

Dette produktet bruker Flickr API, men er ikke godkjent eller sertifisert av Flickr.

Det er alt vi trenger for å produsere en side som viser de siste 21 bildene som miniatyrbilder med en enkel forrige / neste navigasjon. Akkurat som hjemmesiden på demoen. Neste opp: siden som viser bildet vårt.

Trinn 5 - Bygg en side for å vise enkelte bilder

Nå som vi har våre miniatyrbilder, trenger vi en side for å vise hele bildet når man klikker på. Her er koden for photo.php, som miniatyrbildene lenker. Vi starter denne siden på samme måte som indekssiden, men i stedet for sidenummeret vil vi ha iden til bildet som har blitt sendt i webadressen fra vår miniatyrside:

enableCache ("fs", "cache");

Nå må vi samle litt info fra Flickr om bildet, for eksempel bildens id nummer, dets dimensjoner, hvor det sitter i forhold til andre bilder (kontekst) og bildeets URL.

// få tilgang til getInfo-metoden, passerer i bilde ID $ photo = $ f-> photos_getInfo ("$ id", $ secret = NULL); // pass bilde id til getSizes metoden for å få dimensjonene til bildet vårt $ $ photoize = $ f-> photos_getSizes ("$ id", $ secret = NULL); // vi vil ha dimensjonene til mediestørrelsen som vi får fra $ photosize array i forrige linje $ size = $ photosize [3]; // igjen passerer bilde ID gjennom vi får konteksten, som forteller oss hvilke bilder som er før og etter gjeldende id $ context = $ f-> photos_getContext ("$ id"); // buildPhotoURL-metoden gjør stort sett det du forventer - bygge bildeadressen, vi sender inn $ photo og størrelsen vi trenger for å returnere bildeadressen, f.eks. http://farm4.static.flickr.com/3108/3175330082_0bf4b22e47.jpg $ photoUrl = $ f-> buildPhotoURL ($ photo, "Medium"); // Dette forteller oss hvem eieren av bildet er. // Dette er en viktig del å inkludere som vi vil at vårt galleri skal vise bare våre bilder og ikke trekke inn andre brukers bilder - mer av en forklaring om dette i notatene på slutten $ owner = $ photo ["owner"] [ "brukernavn"]; // Vi vil bare ha bildet hvis det tilhører oss - så hvis brukernavnet vårt er det samme som eieren av bildet ... skriver vi ut siden og viser den // mer info om dette på slutten av opplæringen hvis ($ brukernavn == $ eier) ?>

Nå er vi primet for resten av siden med de saftige biter.

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

Fotogalleri

$ Bilde [tittel]"; // Selve bildet, du vil gjenkjenne $ photoUrl ovenfra der vi bygde bildens URL, vi får også tilgang til størrelsen $ størrelse som vi forberedte tidligere for å få bredde og høyde // og tittelen igjen // Vi vil også få den til å kobles til versjonen på Flickr for ekkos "ekko"\"$photo[title]\""; echo" "; // Bildens beskrivelse ekko"

$ Bilde [beskrivelse]

";?>

Nå har vi vårt bilde ... og vi er nesten ferdige. Denne siste biten kan se litt vanskelig ut, men ikke bli kvitt den. Det har å gjøre med bildens kontekst, som i, hvilket bilde kommer neste i strømmen og hvilken som var tidligere til den. Akkurat som du ser på folks Flickr gallerier. Årsaken til at det virker mye kode er fordi dette for å fungere best, må vi sjekke for å se om det er et bilde før eller etter det aktuelle bildet. Hvis det ikke er det, vil vi ikke ha en link, i stedet legger vi inn vanlig tekst og et dummybilde (noimg.png).

 
"; annet // hvis ikke - vis det tomme fillerbildet ekko"\"No";; // hvis det er et neste bilde ... hvis ($ kontekst ['nextphoto'] ['id']) echo""; annet // hvis ikke - vis det tomme fillerbildet ekko"\"No"; ; ekko"
"; ekko"

"; // hvis det er en tidligere kobling, skriv en lenke - hvis ikke, bare teksten hvis ($ kontekst ['prevphoto'] ['id']) echo" «Forrige"; annet echo «« Forrige ";; echo" | "; // hvis det er en neste lenke, skriv en lenke - hvis ikke, bare teksten hvis ($ kontekst ['nextphoto'] ['id']) echo" Neste »"; else echo "Neste» ";; ekko"

";?>

Og for å fullføre siden av, tar vi en link tilbake til hovedgalleriet, litt tekst for Flickr og lukker html.

«Hovedgalleri

Dette produktet bruker Flickr API, men er ikke godkjent eller sertifisert av Flickr.

Vent! En ting til ... vi fullfører if-setningen fra like før html begynte ... igjen, se notatene på slutten om hvorfor vi gjør dette.

 

Og der har du det. Et fotogalleri for nettstedet ditt, drevet av din Flickr-konto. Ta en titt på demoversiden for å se hvordan det ser ut med litt ekstra oppslag og styling lagt til. Dette er en veldig grunnleggende implementering av Flickr API; det skraper bare overflaten på det du kan gjøre, men det gir et fint fotogalleri for nettstedet ditt / bloggen som du enkelt kan oppdatere og vedlikeholde via Flickr.

NOTER OG EKSTRA

Ha det gøy, og vis oss hva du kommer med!