1

I have simple blogger json feed

<script type='text/javascript'>
function mycallback(json) {
for (var i = 0; i < json.feed.entry.length; i++) {
  for (var j = 0; j < json.feed.entry[i].link.length; j++) {
    if (json.feed.entry[i].link[j].rel == 'alternate') {
      var postUrl = json.feed.entry[i].link[j].href;
      break;
    }
  }
  var postTitle = json.feed.entry[i].title.$t;
  var item = '<ul><li><a href=' + postUrl + '>' + postTitle + '</a></li></ul>'; 
  document.write(item);
}
}
</script>
<button type="button">Prev</button>
<button type="button">Next</button>
<h2>Recent Post</h2>
<script src='https://techtovillage.blogspot.com/feeds/posts/default?orderby=published&max-results=1000&alt=json-in-script&callback=mycallback'></script>

This code display my total post link list. how to divide all post link into 5 link list and access all post link with next prev button

Rajendra
  • 49
  • 6

1 Answers1

0

A easy solution would be to use a jQuery pagination library, like this one http://flaviusmatis.github.io/simplePagination.js/ for example. It creates a pagination and even styles it. In this Question (https://stackoverflow.com/a/20896955/1679286) the usage is explained a bit more in detail, if the project page isn't clear enough.

Here a mini Demo (how it could work)

var listInfo = {
  itemsOnPage:4,
  items:[]
 };

function mycallback(json) {
  var tableContent = "";

  listInfo.itemsCount = json.feed.entry.length

  for (var i = 0; i < listInfo.itemsCount; i++) {
    var postTitle = json.feed.entry[i].title.$t;
    for (var j = 0; j < json.feed.entry[i].link.length; j++) {
      if (json.feed.entry[i].link[j].rel === 'alternate') {
        var postUrl = json.feed.entry[i].link[j].href;
        break;
      }
    }
    tableContent += '<tr><td><a href=' + postUrl + '>' + postTitle + '</a></td></tr>'; 
  }
  
  $("#recentPost").html(tableContent);
  listInfo.items = $("#recentPost tr");
  
  console.info(listInfo)
  $("#pagination").pagination({
      items: listInfo.itemsCount,
      itemsOnPage: listInfo.itemsOnPage,
      cssStyle:"light-theme",
      onPageClick: function(pageNumber) {
            var from = listInfo.itemsOnPage * (pageNumber - 1);
            var to = from + listInfo.itemsOnPage;
            listInfo.items.hide()
                 .slice(from, to).show();
        }
  })
  .pagination('selectPage', 1);

}


$.ajax({
    url: "https://techtovillage.blogspot.com/feeds/posts/default?orderby=published&max-results=16&alt=json-in-script",
    jsonp: "callback",
    dataType: "jsonp", 
    success: function( response ) {
        mycallback(response);
    }
});
<link href="https://rawgit.com/flaviusmatis/simplePagination.js/master/simplePagination.css" rel="stylesheet"/>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://rawgit.com/flaviusmatis/simplePagination.js/master/jquery.simplePagination.js"></script>


<h2>Recent Post</h2>
<table id="recentPost">
</table>
<div id="pagination"></div>

Optional: Another solution that is not 100% save, since order of the post could change, would be not loading all post using the query parameter start-index mentioned in the google References https://developers.google.com/gdata/docs/2.0/reference#Queries

Creating this link:
https://techtovillage.blogspot.com/feeds/posts/default?orderby=published&max-results=5&start-index=1&alt=json-in-script&callback=mycallback
And adjusting the code to change to only load the current posts, with Ajax calls (jQuery JSONP or so), so that the start-index is incremented / decremented by 5 depending on the Button/Link that was clicked

winner_joiner
  • 12,173
  • 4
  • 36
  • 61