页面导航脚本在Blogger中无法完全正常工作

时间:2015-12-24 11:47:29

标签: javascript blogger

我从http://yabtb.blogspot.com/的MS-Potilas中选择了这个优秀的javascript,它通过从博客供稿中调用标题信息,将我的下一个和之前的博客标题附加到prev和next图标。如果它以某种方式失败,它有一个备份,即从网址中提取信息并将其转换为伪标题模式中的标题。

事情是,它只适用于我博客文章的最新一半。之后,它切换到PseduoTitle模式。

这是我不明白的。它应该适用于500个帖子。我的网站只有350+。那么为什么它似乎只适用于最新的100多个帖子?

另外,我可以做些什么来增加这篇文章在过去500篇帖子后的帖子数量吗?

非常感谢你的帮助。

这是脚本;

<script type='text/javascript'>
// Post titles to Older Post and Newer Post links (without stats skew)
// by MS-potilas 2012. See http://yabtb.blogspot.com/
//<![CDATA[
var urlToNavTitle = {};
function getTitlesForNav(json) {
  for(var i=0 ; i < json.feed.entry.length ; i++) {
    var entry = json.feed.entry[i];
    var href = "";
    for (var k=0; k<entry.link.length; k++) {
      if (entry.link[k].rel == 'alternate') {
        href = entry.link[k].href;
        break;
      }
    }
    if(href!="") urlToNavTitle[href]=entry.title.$t;
  }
}
document.write('<script type="text/javascript" src="//'+window.location.hostname+'/feeds/posts/summary?redirect=false&max-results=500&alt=json-in-script&callback=getTitlesForNav"/>');
function urlToPseudoTitle(href) {
  var title=href.match(/\/([^\/_]+)(_.*)?\.html/);
  if(title) {
    title=title[1].replace(/-/g," ");
    title=title[0].toUpperCase() + title.slice(1);
    if(title.length > 28) title=title.replace(/ [^ ]+$/, "...")
  }
  return title;
}
$(window).load(function() {
 window.setTimeout(function() {
  var href = $("a.blog-pager-newer-link").attr("href");
  if(href) {
    href = href.replace(/\http\:[^/]+\//, "https");
    var title=urlToNavTitle[href];
    if(!title) title=urlToPseudoTitle(href);
    if(title) $("a.blog-pager-newer-link").html("&lt;&lt; Newer<br />" + title); 
  }
  href = $("a.blog-pager-older-link").attr("href"); 
  if(href) {
    href = href.replace(/\http\:[^/]+\//, "https");
    var title=urlToNavTitle[href];
    if(!title) title=urlToPseudoTitle(href);
    if(title) $("a.blog-pager-older-link").html("Older &gt;&gt;<br />" + title);
  }
 }, 500);
});
//]]>
</script>

1 个答案:

答案 0 :(得分:1)

似乎我设法弄明白了。

显然,即使剧本说max-results = 500,该剧本实际上只拉了150个帖子。我不知道为什么会这样。

所以我只是添加了更多这样的检索脚本来覆盖其余部分。

document.write('<script type="text/javascript" src="//'+window.location.hostname+'/feeds/posts/summary?redirect=false&max-results=150&start-index=151&alt=json-in-script&callback=getTitlesForNav"/>');
function urlToPseudoTitle(href) {
  var title=href.match(/\/([^\/_]+)(_.*)?\.html/);
  if(title) {
    title=title[1].replace(/-/g," ");
    title=title[0].toUpperCase() + title.slice(1);
    if(title.length > 28) title=title.replace(/ [^ ]+$/, "...")
  }
  return title;
}

非常感谢Adam在http://too-clever-by-half.blogspot.com/处为&amp; start-index = 151扩展提供了解决方案。