Jeg har ønsket å skrive en opplæring for en stund nå, og APIer har alltid vært en bestemt interesse for meg. Så med min kones siste foray i fotografering bestemte jeg meg for en Flickr opplæring ville være første drosje utenfor rangen! Å bruke RSS, Flickr og jQuery sammen var også ganske morsomt.
Ok, så vi kommer til å røre på en rekke teknologier for denne opplæringen. Vi skal bruke
en RSS-feed fra Flickr, litt PHP, og noen jQuery å gjøre ting hyggelige og interaktive! Vi vil
bruk SimplePie til å håndtere RSS-feed, som det
gjør livet mye lettere, og kan brukes i andre prosjekter der RSS-feeder er involvert.
Opprett en fil kalt "index.php", og start den med en ganske grunnleggende HTML-struktur for å huske
de ulike komponentene i vår Flickr-feed.
Ganske standard ting, merk at vi har lagt til klasser for topptekst og bunntekst, men mer
viktigere, album-wrapper. Dette er div hvor vi vil sende ut alle bildene som kommer inn
fra vår Flickr-feed.
Lag to nye mapper kalt "includes" og "cache", og last ned href = "http://simpliepie.org/" target = "_ blank"> SimplePie
SimplePie lagrer en hurtigbufret versjon av Flickr-strømmen din lokalt for å bidra til å fremskynde fremtiden
besøk. Merk: Hvis du ikke gjør dette på Windows, ikke glem å sørge for "cache" -mappen
er skrivbar.
handle_content_type (); ?>
Sette inn denne koden helt inn i filen "index.php" gir oss tilgang til SimplePie
bibliotek for å håndtere RSS-feedet for oss. Også den andre og tredje linjen oppretter et nytt feedobjekt
basert på RSS-nettadressen for din Flickr-feed.
Nå kan vi begynne å kaste HTML-koden vår med utdrag av PHP for å sende ut informasjon fra vår Flickr
mate. Noen av nøkkelfunksjonen SimplePie gir er:
$ Fôr-> get_title (); // Returnerer tittelen på RSS-feed $ feed-> get_image_url (); // Returnerer bildet for strømmen, i tilfelle Flickr, brukerens avatar $ feed-> get_items (); // Returnerer en matrise av elementene i fôret, i tilfelle Flickr, bildene med beskrivelsene mv.
Hvert element returnert av get_items () har også sin egen get_title () etc. for å hente den er forskjellig
elementer. For en fullstendig liste over funksjonene som er tilgjengelige for SimplePie, sjekk ut href = "http://simplepie.org/wiki/reference/start" targt = "_ blank"> SimplePie dokumentasjon
Så de første funksjonene vi ringer i skriptet vårt, er tittelen og overskriften:
Flickr Album: get_title (); ?>
get_title (); ?>
Før vi kan begynne å løpe gjennom bildene i feedet, må vi skrive to korte funksjoner.
Den første lokaliserer bildemerket i beskrivelsen av et bilde i RSS-feed. Du kan
skriv denne funksjonen mellom eksisterende PHP-koder øverst på skriptet.
funksjon image_from_description ($ data) preg_match_all ('/] *)> / i ', $ data, $ matches); returner $ treff [1] [0];
Den andre funksjonen lar deg velge størrelsen på bildet som skal hentes fra Flickr, men
justerer filnavnet i en bildetikett. Denne funksjonen bør også plasseres mellom eksisterende PHP
koder øverst på skriptet.
funksjon select_image ($ img, $ size) $ img = eksplodere ('/', $ img); $ filnavn = array_pop ($ img); // Størrelsene som er oppført her er de som Flickr leverer som standard. Pass array-indeksen i variabelen $ size for å selektere en. // 0 for square, 1 for thumb, 2 for small, etc. $ s = array ('_s.', // square '_t.', // thumb '_m.', // small '.', / / medium '_b.' // stor); $ img [] = preg_replace ('/ (_ (s | t | m | b))? \ ./I', $ s [$ size], $ filnavn); returnere implodere ('/', $ img);
Nå kan vi løse gjennom bildene i RSS-feeden, og sende dem ut. Vi vil bruke en for loop til
gå over hvert element i feedet.
get_items () som $ item):?>get_enclosure ()) echo ''. $ enclosure-> get_title (). '
.' "\ N"; $ img = image_from_description ($ item-> get_description ()); $ thumb_url = select_image ($ img, 0); ekko '.' "\ N"; ?>get_date ('J F Y | g: i a'); ? >
For å forklare denne koden, som vi slår gjennom, sender vi ut en ny div som vi kan style senere.
Inne i hver div bruker vi funksjonene vi skrev tidligere for å få en bestemt bildestørrelse (jeg valgte
firkant for enkel styling). Vi sender også tittelen på hvert bilde før du sender ut
bildet selv, og datoen under hvert bilde.
Nå er det på tide å gi albumet noen stil! Så for det første å gi noen grunnleggende struktur til basen
HTML-struktur, vil jeg sette inn noen skrifter, bredder, marginer etc. Også en liten stil for å sortere justeringen
av Flickr-feeds ikonbilde. Ikke glem å knytte stilarkfilen din i hovedenheten av
din HTML først av alt.
Sett deretter inn disse CSS-reglene i "style.css" -filen din:
kropp font-familie: Verdana, Arial, Helvetica, sans-serif; bakgrunnsfarge: # 222; bredde: 960px; margin: 0; skriftstørrelse: 0,75em; .page-wrapper bakgrunnsfarge: # 444; tekstjustering: venstre; bredde: 960px; margin: 0 auto; polstring: 20px; stilling: relativ; topp: 30px; igjen: 30px; overløp: auto; .page-wrapper h1 font-size: 1.8em; .page-wrapper h2 font-size: 1.2em; farge: # 222; .page-wrapper .feedIcon vertical-align: middle; polstring: 0 10px;
Deretter litt stil som skal brukes på hver av bildedivene:
.album-wrapper. foto bredde: 200px; bakgrunnsfarge: # 666; tekst-align: center; vertikaljustering: midt; flyte: venstre; polstring: 10px; margin: 10px; .album-wrapper .photo img border: none; .album-wrapper .photo small color: #aaa; fontstørrelse: 0.9em;
Nå for å legge til litt interaktivitet, tar vi med noen jQuery. Jeg synes det ville vært fint å ha en
svever effekt, og muligheten til å klikke et bilde og se en større versjon. Inkluder jQuery-skriptet
fil, som du kan få den nyeste versjonen av fra
target = "_ blank"> jquery.com
, Lag deg også en "script.js" og ta med det i det sammevei.
Den første delen av jQuery å legge til i "script.js" -filen, er en $ (dokument) .ready () å håndtere
alt du vil ha jQuery å gjøre, etter at dokumentet har lastet inn.
$ (dokument) .ready (funksjon () $ ('. foto'). fadeTo (0, 0,5);
Dette vil fade hver div med klassen ".photo" til 50% så snart dokumentet er fullt lastet
og klar. Deretter vil vi få bildene til å lyse når musen svinger over dem.
$ (dokument) .ready (funksjon () $ ('. foto'). fadeTo (0, 0,5); $ ('. foto'). hover (funksjon (e) $ (dette) .stop (). fadeTo ('slow', 1.0);, funksjon (e) $ (dette) .stop (). fadeTo ('slow', 0.5);););
Disse ekstra 5 linjene forteller jQuery å gjøre hvert bilde, på hover, visne til 100%, og når musen
går av igjen, fade tilbake til 50%. (Takk til Mike Schneider og Simon i kommentarene til noen
endres her)
Det ville være fint å gjøre miniatyrbildene klikkbare, slik at du kan se en større versjon av bildene.
For å gjøre dette bruker vi Thickbox, bygget på jQuery.
Last ned Thickbox, og deretter
inkludere den i hodet til "index.php" -filen, som vist ovenfor.
Når de er inkludert, kan du redigere følgende linjer for å trene nettadressen til et fullstendig bilde, og legge til en
lenke med en klasse av 'thickbox'. Dette aktiverer Thickbox, og det skal bare fungere, jeg har også lagt til
tittel som gir en bildetekst.
$ full_url = bilde ($ url, 'full'); ekko 'get_title (). '">'." \ n ";
Det er det! Du bør nå ha et skript som viser en Flickr-feed for deg, og lar deg
klikk på dem og se en større versjon. Nyt!