我使用instafeed.js从Instagram加载一些照片,我有一个小功能,可以将Feed设置为特定标记作为过滤器。像这样:
function generateFeed(category){
var feed = new Instafeed({
target: category+'Feed',
get: 'user',
userId: 'USERID',
accessToken: 'TOKEN',
sortBy: 'most-recent',
template: '<div id="insta-card" class="animated fadeIn col-lg-4 col-md-4 col-sm-4 col-xs-4"><a class="fancybox-thumb-'+category+'" rel="fancybox-thumb" href="{{image}}"><img class="insta-img" src="{{image}}"></a><div class="insta-infos"><p>{{caption}}</p></div></div>',
limit: '12',
resolution: 'standard_resolution',
filter: function(image) {
return image.tags && image.tags.indexOf(category) >= 0;
},
after: function(){
if (!this.hasNext()) {
$('.load-button').hide();
}else{
$('.load-button').show();
}
}
});
feed.run();
$('.load-button').on('click',function(){
feed.next();
});
}
一切运作良好,但似乎限制(在这种情况下为12)不是加载照片的限制,而是获取搜索标签的照片限制。
如果在此限制内没有带有该标签的照片,如果此照片存在并且有该标记,那么Feed也会为空!
有办法解决这个问题吗?在通过过滤器搜索时将限制设置为max(60)?
如果可以从 feed.next()函数传递限制,那将很容易,但我还没有找到任何有用的东西。
任何人都可以帮助我吗?
感谢。
答案 0 :(得分:0)
您应该将filter
设置设置为更高的值,并手动限制.next()
功能内的最大结果量。
为了在调用function generateFeed(category){
var currentCount = 0;
var feed = new Instafeed({
target: category+'Feed',
get: 'user',
userId: 'USERID',
accessToken: 'TOKEN',
sortBy: 'most-recent',
template: '<div id="insta-card" class="animated fadeIn col-lg-4 col-md-4 col-sm-4 col-xs-4"><a class="fancybox-thumb-'+category+'" rel="fancybox-thumb" href="{{image}}"><img class="insta-img" src="{{image}}"></a><div class="insta-infos"><p>{{caption}}</p></div></div>',
limit: '60',
resolution: 'standard_resolution',
before: function() {
currentCount = 0;
},
filter: function(image) {
// put your real limit here
var shouldDisplay = (currentCount < 12);
if (shouldDisplay) {
if (image.tags && image.tags.indexOf(category) >= 0) {
currentCount += 1;
} else {
shouldDisplay = false;
}
}
return shouldDisplay;
},
after: function(){
if (!this.hasNext()) {
$('.load-button').hide();
} else{
$('.load-button').show();
}
}
});
feed.run();
$('.load-button').on('click', function(){
feed.next();
});
}
时保留此行为,您应该在每次Feed加载时重置计数器:
limit
请注意,如果您的API客户端位于Sandbox Mode,则无论您将keyUsage
设置为keyCertSign
,您的通话都将限制为20个项目,因此这可能对您没什么影响。