2009-08-15

如何为Blogger添加相关文章

  1. 从blogger后台进入"布局-修改HTML"。注意先check"扩展窗口小部件模板",这样会显示完整的模板文件。
  2. 在</head>前加入下面代码,其中加粗内容控制数量。
    <script type='text/javascript'>
    //<![CDATA[
    <!-- Script functions for Related Posts: RelatedLabels(), RemoveDuplicatedPosts(), contains(), ShowRelatedPosts()-->
    var relatedPostsNum = 0;
    var relatedTitles = new Array();
    var relatedUrls = new Array();
    var relatedDates = new Array();

    function RelatedLabels(json) {
      var regex1=/</g, regex2=/>/g;
      for (var i = 0; i < json.feed.entry.length; i++) {
        var entry = json.feed.entry[i];
        relatedTitles[relatedPostsNum] = (entry.title.$t.replace(regex1, '<')).replace(regex2, '>');
        relatedDates[relatedPostsNum] = entry.published.$t.substr(0,10);
        for (var j = 0; j < entry.link.length; j++) {
          if (entry.link[j].rel == 'alternate') {
            relatedUrls[relatedPostsNum] = entry.link[j].href;
            relatedPostsNum++;
            break;
          }
        }
      }
    }

    function RemoveDuplicatedPosts(PostUrl) {
      var tmpUrls = new Array(0);
      var tmpTitles = new Array(0);
      var tmpDates = new Array(0);
      function contains(a, e) {
        for(var j = 0; j < a.length; j++)
          if (a[j]==e)
            return true;
        return false;
      }
      for(var i = 0; i < relatedUrls.length; i++) {
        if(!contains(tmpUrls, relatedUrls[i]) && PostUrl != relatedUrls[i]) {
          tmpUrls.length += 1;
          tmpUrls[tmpUrls.length - 1] = relatedUrls[i];
          tmpTitles.length += 1;
          tmpTitles[tmpTitles.length - 1] = relatedTitles[i];
          tmpDates.length += 1;
          tmpDates[tmpDates.length - 1] = relatedDates[i];
        }
      }
      relatedTitles = tmpTitles;
      relatedUrls = tmpUrls;
      relatedDates = tmpDates;
    }

    function ShowRelatedPosts(PostUrl) {
      RemoveDuplicatedPosts(PostUrl);
      var r = Math.floor((relatedTitles.length - 1) * Math.random());
      var i = 0;
      if (relatedTitles.length > 0) {
        document.write('Related Posts: <ul>');
        while (i < relatedTitles.length && i < 5) {
          document.write('<li><a href="' + relatedUrls[r] + '">' + relatedTitles[r] + '</a> - ' + relatedDates[r] + '</li>');
          if (r < relatedTitles.length - 1)
            r++;
          else
            r = 0;
          i++;
        }
        document.write('</ul>');
      }
    }
    //]]>
    </script>
  3. 找到下面代码:
    <b:if cond='data:post.labels'>
    <data:postLabelsLabel/>
    <b:loop values='data:post.labels' var='label'>
    <a expr:href='data:label.url' rel='tag'><data:label.name/></a><b:if cond='data:label.isLast != "true"'>,</b:if>
    </b:loop>
    </b:if>
    在</b:loop>前加入收集信息的调用,如下所示,其中加粗部分也是控制数量的:
    <b:if cond='data:post.labels'>
    <data:postLabelsLabel/>
    <b:loop values='data:post.labels' var='label'>
    <a expr:href='data:label.url' rel='tag'><data:label.name/></a><b:if cond='data:label.isLast != "true"'>,</b:if>
        <!-- Fixed for Related Posts -->
        <b:if cond='data:blog.pageType == "item"'>
           <script expr:src='"/feeds/posts/default/-/" + data:label.name + "?alt=json-in-script&callback=RelatedLabels&max-results=10"' type='text/javascript'/>
    </b:if>
    </b:loop>
    </b:if>
  4. 在<div class='post-footer-line post-footer-line-3'/>中加入显示部分,如下所示:
    <div class='post-footer-line post-footer-line-3'/>
      <b:if cond='data:blog.pageType == "item"'>
        <script type='text/javascript'>ShowRelatedPosts('<data:post.url/>');</script>
      </b:if> </div>