Maak een Slick Flickr-galerij met SimplePie

Ik wilde al geruime tijd een tutorial schrijven en API's zijn altijd al een bijzondere interesse van mij geweest. Dus met de recente inval van mijn vrouw in fotografie besloot ik dat een Flickr-tutorial de eerste cab uit de rang zou zijn! Het gebruik van RSS, Flickr en jQuery was ook best leuk.




Ok, dus we gaan een aantal technologieën aanraken voor deze tutorial. We zullen gebruiken

een RSS-feed van Flickr, een beetje PHP en wat jQuery om dingen leuk en interactief te maken! Goed

gebruik SimplePie om de RSS-feed als zodanig te behandelen

maakt het leven veel eenvoudiger en kan worden gebruikt in andere projecten waarbij RSS-feeds betrokken zijn.

Stap 1

Maak een bestand met de naam "index.php" en begin ermee met een redelijk eenvoudige HTML-structuur

de verschillende componenten van onze Flickr-feed.

  

Vrij standaarddingen, merk op dat we klassen hebben toegevoegd voor de kop- en voettekst, maar meer

belangrijker, de album-wrapper. Dit is de div waar we alle afbeeldingen die binnenkomen zullen uitvoeren

van onze Flickr-feed.

Stap 2

Maak twee nieuwe mappen met de naam "includes" en "cache" en download

href = "http://simpliepie.org/" target = "_ blank"> SimplePie

en kopieer het naar de map "includes".

SimplePie slaat op slimme wijze een in de cache opgeslagen versie van uw Flickr-feed lokaal op om de toekomst te versnellen

bezoeken. Opmerking: als u dit niet in Windows doet, vergeet dan niet om de map "cache" te controleren

is beschrijfbaar.

 handle_content_type (); ?> 

Door deze code helemaal bovenin uw "index.php" -bestand te plaatsen, hebben we toegang tot de SimplePie

bibliotheek om de RSS-feed voor ons af te handelen. De tweede en derde regel maken ook een nieuw feedobject

op basis van de RSS-URL voor uw Flickr-feed.

Stap 3

Nu kunnen we beginnen met het rommel maken van onze HTML met fragmenten van PHP om informatie van onze Flickr uit te voeren

voeden. Enkele van de belangrijkste functies die SimplePie biedt zijn:

 $ Feed-> get_title (); // Geeft als resultaat de titel van de RSS-feed $ feed-> get_image_url (); // Retourneert de afbeelding voor de feed, in het geval van Flickr, de avatar $ feed-> get_items () van de gebruiker; // Retourneert een array van items in de feed, in het geval van Flickr, de foto's met hun beschrijvingen, enzovoort. 

Elk item geretourneerd door get_items () heeft ook een eigen get_title () enz. Om het verschillende op te halen

elementen. Voor een volledige lijst van de functies die beschikbaar zijn voor SimplePie, bekijk de

href = "http://simplepie.org/wiki/reference/start" targt = "_ blank"> SimplePie-documentatie

.

Dus de eerste functies die we in ons script zullen noemen, zijn de titel en titel:

 Flickr Album: <?php echo $feed->get_title (); ?> 
 

<?php echo $feed->get_title (); ?> get_title (); ?>

Stap 4

Voordat we de foto's in de feed kunnen doorlopen, moeten we twee korte functies schrijven.

De eerste lokaliseert de afbeeldingstag in de beschrijving van een foto in de RSS-feed. Jij kan

schrijf deze functie tussen de bestaande PHP-tags aan de bovenkant van het script.

 function image_from_description ($ data) preg_match_all ('/] *)> / i ', $ gegevens, $ overeenkomsten); return $ matches [1] [0];  

Met de tweede functie kunt u de grootte selecteren van de afbeelding die u wilt ophalen van Flickr, maar

aanpassing van de bestandsnaam in een afbeeldingstag. Deze functie moet ook tussen de bestaande PHP worden geplaatst

tags aan de bovenkant van het script.

 function select_image ($ img, $ size) $ img = explode ('/', $ img); $ filename = array_pop ($ img); // De hier vermelde formaten zijn degene die Flickr standaard biedt. Geef de array-index door in de variabele $ size om er een te selecteren. // 0 voor vierkant, 1 voor duim, 2 voor klein, etc. $ s = array ('_s.', // square '_t.', // thumb '_m.', // small '.', / / medium '_b.' // groot); $ img [] = preg_replace ('/ (_ (s | t | m | b))? \ ./ i', $ s [$ size], $ filename); return implode ('/', $ img);  

Stap 5

Nu kunnen we de foto's in de RSS-feed doorlopen en deze uitvoeren. We zullen een for-lus gebruiken om

over elk item in de feed gaan.

 
get_items () als $ item):?>
get_enclosure ()) echo '

'. $ enclosure-> get_title (). '

.' "\ N"; $ img = image_from_description ($ item-> get_description ()); $ thumb_url = select_image ($ img, 0); echo '.' "\ N"; ?>

get_date ('j F Y | g: i a'); ? >

Om dit stukje code uit te leggen, voeren we tijdens het doorlopen een nieuwe div uit die we later kunnen stylen.

Binnen elke div gebruiken we de functies die we eerder hebben geschreven om een ​​bepaalde afbeeldingsgrootte te krijgen (ik heb ervoor gekozen

vierkant voor het gemak van styling). We voeren ook de titel van elke foto uit voordat de

foto zelf en de datum onder elke foto.

Stap 6

Nu is het tijd om het album wat stijl te geven! Dus eerst om wat basisstructuur aan de basis te geven

HTML-structuur, ik zal wat lettertypen, breedtes, marges etc. instellen. Ook een beetje stijl om de uitlijning te sorteren

van het pictogramafbeelding van de Flickr-feed. Vergeet niet uw stylesheet-bestand te linken in het head-gedeelte van

jouw HTML eerst.

  

Voeg deze CSS-regels vervolgens toe aan uw "style.css" -bestand:

 lichaam font-family: Verdana, Arial, Helvetica, sans-serif; achtergrondkleur: # 222; breedte: 960 px; marge: 0; lettergrootte: 0.75em;  .page-wrapper background-color: # 444; text-align: left; breedte: 960 px; marge: 0 auto; opvulling: 20px; positie: relatief; top: 30px; links: 30px; overloop: automatisch;  .page-wrapper h1 font-size: 1.8em;  .page-wrapper h2 font-size: 1.2em; kleur: # 222;  .page-wrapper .feedIcon vertical-align: middle; opvulling: 0 10px;  

Vervolgens wat stijl toepassen op elk van de foto-divs:

 .album-omslag .photo width: 200px; achtergrondkleur: # 666; text-align: center; vertical-align: middle; zweven: links; opvulling: 10px; marge: 10px;  .album-wrapper .photo img border: none;  .album-wrapper .photo small color: #aaa; lettergrootte: 0.9em;  

Stap 7

Om een ​​beetje interactiviteit toe te voegen, voegen we wat jQuery toe. Ik denk dat het leuk zou zijn om een ​​te hebben

zweefeffect en de mogelijkheid om op een afbeelding te klikken en een grotere versie te bekijken. Voeg het jQuery-script toe

bestand, waarvan je de nieuwste versie van kunt krijgen

target = "_ blank"> jquery.com

, maak ook jezelf een "script.js" en voeg daar hetzelfde in

manier.

   

Stap 8

Het eerste stukje jQuery dat u aan uw "script.js" -bestand moet toevoegen, is een $ (document) .ready () om te verwerken

alles wat u jQuery wilt laten doen, nadat het document is geladen.

 $ (document) .ready (function () $ ('. photo'). fadeTo (0, 0.5);

Hierdoor wordt elke div met de klasse ".photo" vervaagd tot 50% zodra het document volledig is geladen

en klaar. Vervolgens laten we de afbeeldingen oplichten als de muis eroverheen zweeft.

 $ (document) .ready (function () $ ('. photo'). fadeTo (0, 0.5); $ ('. photo'). hover (functie (e) $ (this) .stop (). fadeTo ('slow', 1.0);, functie (e) $ (this) .stop (). fadeTo ('slow', 0.5);););

Deze extra 5 regels vertellen jQuery dat elke foto, bij zweven, vervaagt tot 100%, en wanneer de muis

gaat weer af, vervaagt terug naar 50%. (Met dank aan Mike Schneider en Simon in de commentaren voor sommigen
wijzigingen hier)

Stap 9

Het zou leuk zijn om de thumbnails klikbaar te maken, zodat u een grotere versie van de afbeeldingen kunt bekijken.

Om dit te doen, zullen we Thickbox gebruiken, gebouwd op jQuery.

  
  

Download Thickbox en dan

neem het op in de kop van uw "index.php" bestand, zoals hierboven getoond.

Nadat ze zijn opgenomen, bewerkt u de volgende regels om de URL uit te werken naar een volledige afbeelding en voegt u a toe

link met een klasse van 'thickbox'. Dit activeert Thickbox, en het zou gewoon moeten werken, ik heb het ook toegevoegd

titel die een bijschrift levert.

 $ full_url = foto ($ url, 'full'); echo 'get_title (). '">' . $enclosure->get_title (). ''." \ n "; 

Compleet!

Dat is het! U zou nu een script moeten hebben dat een Flickr-feed voor u weergeeft, en u kunt dat doen

klik erop en zie een grotere versie. Genieten!

  • Abonneer u op de NETTUTS RSS-feed voor meer dagelijkse webontwikkelingen, tuts en artikelen.