javascript - instafeed.js - 使用过滤器限制

时间:2016-09-16 14:38:10

标签: javascript instafeedjs

我使用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()函数传递限制,那将很容易,但我还没有找到任何有用的东西。

任何人都可以帮助我吗?

感谢。

1 个答案:

答案 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个项目,因此这可能对您没什么影响。