我的任务是在Tumblr博客中添加“最受欢迎”功能。基本上,当点击最热门按钮时,我需要显示单个帖子或帖子列表,按其受欢迎程度排序。流行度将根据帖子的“备注”数量来计算。
有没有人对最佳方法有什么建议?我在http://www.tumblr.com/docs/en/custom_themes#search的主题自定义中找不到任何内容。 API路由是实现这一目标的唯一途径吗?
答案 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有一个类似的插件,但它只适用于图片