2014-03-02 65 views
1

我有一個博客博客,但我有點迷路了他們的API。我想知道是否可以創建一個列出我博客的所有帖子的頁面。如何顯示Blogger博客上的所有帖子列表?

我在網上找到一些答案,但大多不工作:(

另一個問題,我有:?可以在不使用JavaScript我可能是錯的DB工作,但我想大多數的小部件的使用AJAX(它調用一些JSON得到所有的信息並將其顯示在JS)。

謝謝!

回答

3

要列出所有相關博客文章,你不需要存取Blogger API。使用博客的feed和Javascript的代碼段可以爲你做到這一點。

工作實例可以在這裏看到: http://codepen.io/yaqoob/pen/GqJDy/

這裏是JavaScript代碼:

<script type="text/javascript"> 
var postTitle=new Array();var postUrl=new Array();var postMp3=new Array();var postDate=new Array();var postYear=new Array();var postMonth=new Array();var postYearMonth=new Array();var postYearMonth2=new Array();var postTanggal=new Array();var postLabels=new Array();var postBaru=new Array();var sortBy="titleasc";var tocLoaded=false;var numChars=250;var postFilter="";var numberfeed=0;var month2=["January","February","March","April","May","June","July","August","September","October","November","December"];function loadtoc(a){function b(){if("entry" in a.feed){var d=a.feed.entry.length;numberfeed=d;ii=0;for(var h=0;h<d;h++){var m=a.feed.entry[h];var e=m.title.$t;var l=m.published.$t.substring(0,10);var p=m.published.$t.substring(5,7);var g=m.published.$t.substring(8,10);var n=month2[parseInt(p,10)-1]+" "+m.published.$t.substring(0,4);var c="/"+m.published.$t.substring(0,4)+"_"+p+"_01_archive.html";var j;for(var f=0;f<m.link.length;f++){if(m.link[f].rel=="alternate"){j=m.link[f].href;break}}var o="";for(var f=0;f<m.link.length;f++){if(m.link[f].rel=="enclosure"){o=m.link[f].href;break}}postTitle.push(e);postDate.push(l);postUrl.push(j);postYearMonth.push(n);postYearMonth2.push(c);postTanggal.push(g)}}}b();displayToc2();document.write('<br/><a href="http://feeds2.feedburner.com/YourFeed" style="font-size: 11px; text-decoration:none; color: #616469;">Subscribe to Our RSS Feed and Get all the updates On the Fly</a></br/>')}function displayToc2(){var a=0;var b=0;while(b<postTitle.length){temp1=postYearMonth[b];document.write("<p/>");document.write('<p><a href="'+postYearMonth2[b]+'">'+temp1+"</a></p><ul>");firsti=a;do{document.write("<li>");document.write("["+postTanggal[a]+'] <a href="'+postUrl[a]+'">'+postTitle[a]+"</a>");document.write("</li>");a=a+1}while(postYearMonth[a]==temp1);b=a;document.write("</ul>");if(b>postTitle.length){break}}}; 
</script> 

而這裏的JavaScript回調。

<script src="http://domain.blogspot.com/feeds/posts/default?max-results=500&alt=json-in-script&callback=loadtoc"></script> 

替換博客的鏈接自己的。

+0

謝謝,這正是我需要的。 但是在這裏,我們從客戶端獲取數據。我們不能直接從服務器上做到這一點嗎? 無論如何,我會用你的腳本:) – kdamazic

+0

@kdamazic我們受博主的限制。沒有任何服務器端訪問,我們唯一的訪問是Blogger API的XML模板。沒有別的,所以JavaScript是唯一的選擇。 – yaqoob

1

嗨這裏,我覺得最好的解決方案

將HTML JAVA /腳本插件

和簡單的職位的代碼,它的偉大工程

<div><ul id="postList12"></ul></div> 

<script type="text/javascript"> 

var startIndex = 1; 
var maxResults = 100; 

function sendQuery12() 
{ 
    var scpt = document.createElement("script"); 
    scpt.src = "/feeds/posts/summary?alt=json&callback=processPostList12&start-index=" + startIndex + "&max-results=" + maxResults; 

    document.body.appendChild(scpt); 
} 

function processPostList12(root) 
{ 
    var elmt = document.getElementById("postList12"); 
    if (!elmt) 
     return; 

    var feed = root.feed; 

    if (feed.entry.length > 0) 
    { 
     for (var i = 0; i < feed.entry.length; i++) 
     { 
     var entry = feed.entry[i]; 

     var title = entry.title.$t; 

     for (var j = 0; j < entry.link.length; j++) 
     { 
      if (entry.link[j].rel == "alternate") 
      { 
       var url = entry.link[j].href; 

       if (url && url.length > 0 && title && title.length > 0) 
       { 
        var liE = document.createElement("li"); 

        var a1E = document.createElement("a"); 
        a1E.href = url; 
        a1E.textContent = title; 

        liE.appendChild(a1E); 

        elmt.appendChild(liE); 
       } 

       break; 
      } 
     } 
     } 

     if (feed.entry.length >= maxResults) 
     { 
     startIndex += maxResults; 
     sendQuery12(); 
     } 
    } 
} 

sendQuery12(); 
+0

適合我。謝謝。 – theLearner

相關問題