我正在使用jusfieimage gallery, swipebox和PHP Flickr API Wrapper来返回和显示图库中的图像。
问题是,目前它显示从某个用户帐户获得的图像。是否有办法修改下面的代码,使它只显示来自"Southampton"而不是从指定的userID显示图像?
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<link rel="stylesheet" href="justifiedGallery/justifiedGallery.min.css" />
<script src="justifiedGallery/jquery.justifiedGallery.min.js"></script>
<script src="swipebox/src/js/jquery.swipebox.js"></script>
<link rel="stylesheet" href="swipebox/src/css/swipebox.css">
</head>
<div id="gallery">
<?php
include_once('./phpFlickr.php');
$key = "491566f49be9289"; // enter your API key here
$secret = "11eb02"; // enter your API secret here
$userid = "163300815@N05"; // Get flickr user id here. Currently points to Jasper Reddin
$f = new phpFlickr($key, $secret);
$response = $f->people_getPublicPhotos($userid, NULL, "url_m,url_h", 500)['photos']['photo'];
foreach ($response as $photo) {
$title = str_replace("'", "'", $photo['title']);
echo '<a href="' . $photo['url_h'] . '" class="swipebox" title="' . $title . '"><img alt="' . $title . '" src="' . $photo['url_m'] . '"></a>';
}
?>
</div>
<script>
$('#gallery').justifiedGallery( {
rowHeight: 200,
lastRow: 'nojustify',
rel: 'Portfolio',
margins: 2
});
$(".swipebox").swipebox({
loopAtEnd: true
});
</script>
<style>
body {
margin: 0;
}
#gallery {
background-color: black;
}
</style>
因为你没有链接到你正在使用的PHP库,我猜它是Dan Coulter的这个,我注意到它是7年前更新的。但是,它允许您使用->call
方法调用Flickr API中的任何方法,因此您应该能够使用Flickr文档中列出的任何方法来实现您的目标。
特别地,有一个叫做flickr.photos.search
的方法,它允许你为你想要的照片指定很多不同的选项。最贴切地:
user_id
指定返回谁的照片bbox
指定矩形/四边形地理区域lat
,lon
,radius
和radius_units
指定圆形地理区域woe_id
或place_id
指定已识别的地方,如城镇
文档说,你不能搜索所有照片在某个位置,如果你没有指定一些其他限制,如标签或日期,那么只有照片添加在最近12小时将返回。
要查找woe_id
和place_id
的值,可以使用标题为&;place &;的方法,例如flickr.places.find
。
这两个方法在Dan Coulter的库中都有包装器,所以你的代码可能看起来像这样(完全未经测试):
$places = $f->places_find('Southampton')['places']['place'];
foreach ( $places as $place ) {
echo "<h2>{$place['_content']}</h2>";
$photos = $f->photos_search([
'place_id' => $place['place_id'],
// other search parameters here
'extras' => 'url_m,url_h',
'per_page' => 500
])['photos']['photo'];
foreach ( $photos as $photo ) {
$title = str_replace("'", "'", $photo['title']);
echo '<a href="' . $photo['url_h'] . '" class="swipebox" title="' . $title . '"><img alt="' . $title . '" src="' . $photo['url_m'] . '"></a>';
}
}