【问题标题】:Navigating Next and Prev Post By Label In Blogger在 Blogger 中按标签导航下一篇和上一篇文章
【发布时间】:2017-07-17 07:08:44
【问题描述】:

我编写了一个代码,用于导航同一标签下的下一篇和上一篇文章。

此博客中的所有帖子将始终仅在 1 个标签下。该博客用于托管日本漫画(漫画),因此章节将位于 1 个通用标签下,即章节漫画的标题。

代码是:

<style>
#button_block_container
{
    text-align:center;
}
#next, #prev
{
display: inline-block;
}
</style>
<script type="text/javascript">
 //<![CDATA[
 var pT="<data:post.title/>";
 function recentpostslist(json) {
 var eU=new Array();
 var eT=new Array();
 var current,k=0;
   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') {
         break;
       }
     }
    eU[k] = "'" + json.feed.entry[i].link[j].href + "'";//bs
    eT[k] = json.feed.entry[i].title.$t;
    k++;
    }
    for(var i=0;i<k;i++)
    {
    if(eT[i]==pT)
      current=i;
    }
    nb(current,eT,eU,k);
 }
 function nb(c,eT,eU,k)
 {
  var np=c-1;
  var pp=c+1;
  if(c!=0)
  {
    if(np!=0)
    {
      var next="<a href="+eU[np]+"><img src='https://1.bp.blogspot.com/-vbAhPUydPwA/WWuen8w2rsI/AAAAAAAAVP4/rutiJBBKz2kYTclTUKtq6W2vBm8pi6uaACLcBGAs/s1600/if_go-next_118773.png' alt='Next Chapter' title='Next Chapter' height='48' width='48'/></a>";
     document.getElementById("next").innerHTML=next;
    }
    if(pp!=k)
    {
      var prev="<a href="+eU[pp]+"><img src='https://2.bp.blogspot.com/-jHxFGDn9aj0/WWueoDAidyI/AAAAAAAAVP8/O_okyJkKiE0j621B2b6d6AmWGDL_7SczACLcBGAs/s1600/if_go-previous_118774.png' alt='Previous Chapter' title='Previous Chapter' height='48' width='48'/></a>";
      document.getElementById("prev").innerHTML=prev;
    }
 }
}
 //]]> 
 </script>
 <b:loop values='data:post.labels' var='label'>
  <script expr:src='&quot;feeds/posts/summary/-/&quot;+data:label.name+&quot;?alt=json-in-script&amp;callback=recentpostslist&amp;max-results=999&quot;' type='text/javascript'/>
</b:loop>

逻辑是完美的。当我将某个章节的标题放入变量 pT 并使用它作为脚本回调时,它会起作用

<script src="http://www.example.com/feeds/posts/summary/-/**LABEL NAME**?max-results=150&alt=json-in-script&callback=recentpostslist"></script>

但是当我将它放入 Blogger 模板时,我需要使用 expr:src 使其接受 data:label.name

顺便说一下,这里是对我使用的变量的解释。
eU 是一个数组,其中存储了给定标签下帖子的所有 URL。
eT 是一个数组其中存储了给定标签下的所有帖子标题。
pT用于存储当前浏览的章节名称。
我正在使用for 循环:

for(var i=0;i<k;i++)
    {
    if(eT[i]==pT)
      current=i;
    }
    nb(current,eT,eU,k);

在这里,它通过比较eT数组中的所有帖子标题与当前if(eT[i]==pT)来找出当前帖子所在的数组索引, 将找到的索引值存储在current 中,然后我将其发送到具有当前索引的函数nb(),以及数组和最后存储的数组索引k

np 存储下一篇文章的索引值。由于帖子是按照最近的帖子列表顺序排列的,我不得不将current-1 和 Prev post pp 设置为 current+1

if(np!=0) 用于查找是否有下一个帖子,if(pp!=k) 用于查找是否有以前的帖子。

现在是问题部分: 当我在 Blogger HTML 模板中键入代码并保存并转到帖子时,根本没有显示帖子的内容。
仅加载页脚和顶部页眉。

发现问题出在回调脚本上:

 <b:loop values='data:post.labels' var='label'>
 <script expr:src='&quot;feeds/posts/summary/-/&quot;+data:label.name+&quot;?alt=json-in-script&amp;callback=recentpostslist&amp;max-results=999&quot;' type='text/javascript'/>
</b:loop>

请帮忙。

【问题讨论】:

    标签: javascript jquery html xml blogger


    【解决方案1】:

    出现问题是因为分隔符(+&amp;quot;)之间没有空格

    代码应该改为 -

    <b:loop values='data:post.labels' var='label'>
    <script expr:src='&quot;feeds/posts/summary/-/&quot; +data:label.name+ &quot;?alt=json-in-script&amp;callback=recentpostslist&amp;max-results=999&quot;' type='text/javascript'/>
    </b:loop>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-22
      • 2019-11-14
      • 1970-01-01
      相关资源
      最近更新 更多