在Tumblr博客上显示最热门的帖子

时间:2013-12-14 22:48:52

标签: tumblr

我的任务是在Tumblr博客中添加“最受欢迎”功能。基本上,当点击最热门按钮时,我需要显示单个帖子或帖子列表,按其受欢迎程度排序。流行度将根据帖子的“备注”数量来计算。

有没有人对最佳方法有什么建议?我在http://www.tumblr.com/docs/en/custom_themes#search的主题自定义中找不到任何内容。 API路由是实现这一目标的唯一途径吗?

1 个答案:

答案 0 :(得分:1)

好吧,我不是Tumblr的专家,但是我正在为我正在开发的项目公平分享API。根据我的经验,您似乎需要一个API才能获得所有的帖子备注数量。使用我知道的主题来订购页面上显示的帖子没有API密钥,但是为了更进一步,你必须使用javascript插件或者只使用Tumblr API(它使用起来非常简单)

从我短暂的时间开始考虑这个问题,你可以在你的每个帖子上放一个NoteCount(用CSS隐藏或不用隐藏;直到你),然后使用API​​的notes_info获得所有这些数字并进行比较。然后,您可以在数组中存储您想要的多少帖子(根据音符计数),并在您想要的页面上使用该数组。这似乎很多工作,但我不确定你还能做到这一点

修改

在稍微调查一下这个问题之后,我发现音符计数远不是Tumblr的一致特征。所有笔记都没有一个类共享,也没有一个周围的文本是一致的。您似乎必须在个人博客的基础上进行此操作。通过脚本或API获取帖子的HTML后,您可以运行类似于以下功能的函数,该函数使用正则表达式来检测音符计数的位置

var posts = document.querySelectorAll('.post'), // Get all posts (*most* blogs have this, not all)
    noteExpr = /with ([0-9]+) notes/, // Get any numbers between "with " and " notes"
    noteCounts = [];

// Creates an array filled with all of the note counts
for(var i = 0; i < posts.length; i++) {
    noteCounts.push(noteExpr.exec(posts[i].innerHTML)[1]);   
}
// Do something with noteCounts

Demo,使用我最喜欢的博客MotionAddicts

中的帖子

使用我查看的网站的更多示例:

<a href="noteCountUrl.com">58 notes</a>使用/>([^>]+) notes/

<div class="notecount">Notes: 218</div>使用/Notes\: ([^>]+)</

缺点是如果每个博客的格式不同,必须为每个博客定制,但这是我知道如何不使用API​​的唯一方式,即使那样我也不是确定有更好的方法

其他信息:

Studiomoh有一个类似的插件,但它只适用于图片

Example of how to include a NoteCount

How to include a note count when there are no notes