2013-12-14 108 views
1

我一直負責在Tumblr博客中添加「最流行」功能。從本質上講,當最受歡迎的按鈕被點擊時,我需要顯示一個單獨的帖子或一個帖子列表,它們的受歡迎程度排序。受歡迎程度將根據該帖子「筆記」的數量計算。顯示Tumblr博客上最熱門的帖子

有沒有人有關於這方面的最佳途徑的建議?我在http://www.tumblr.com/docs/en/custom_themes#search找不到任何烘焙到他們的主題定製中的東西。去API路線是完成這樣的唯一途徑嗎?

回答

1

那麼,我並不是Tumblr的專家,但是我正在爲我正在開發的一個項目與API合作。從我的經驗看來,你需要一個API來獲得全部的帖子記數。使用我知道的主題來訂購頁面上顯示的帖子而不使用API​​密鑰,但要走得更遠,您必須使用javascript插件或僅使用Tumblr API(這非常容易使用)

從我只是花了很短的時間思考這個問題,你可以在每個帖子上放置一個NoteCount(用CSS隱藏或不用;直到你),然後使用API​​的notes_info獲得所有這些數字並進行比較。然後,您可以在數組中存儲您希望的多少帖子(根據筆記數量),並在您想要的頁面上使用該數組。這似乎是一個大量的工作,但我不知道你能怎麼回事做到這一點

編輯

調查這個問題有點後,我發現張數是遠從一貫的特點tumblr。沒有一個班級全部記錄數量,也沒有一個一致的文字。看起來你必須在個人博客的基礎上做到這一點。一旦你獲得職位的HTML,通過腳本或API,你可以運行類似如下的功能,它使用正則表達式來檢測,其中張數

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