2010年10月30日土曜日

bloogerにrelated postsを導入する

[したいこと・しりたいこと・目標]

bloogerにrelated postsを導入する
bloogerに関連記事を導入する
投稿記事につけられたラベルをもとに、関連記事を表示させたい。



[したこと]



(01)
bloggerのダッシュボードにある"デザイン" タプを選択する。

(02)
"HTMLを編集する"を選択し、ウィジェットのテンプレートを展開をチェックする。


(03)
以下のコードを探す。
</head>

(04)
(03)で探したコードの直前に以下のコードを追加する。
<style> 
#related-posts { width : 540px; margin-top:20px; margin-left : 5px; margin-bottom:20px; font : 11px Verdana; margin-bottom:10px; } 
#related-posts .widget { list-style-type : none; margin : 5px 0 5px 0; padding : 0; } 
#related-posts .widget h2, #related-posts h2 { font-size : 20px; font-weight : normal; margin : 5px 7px 0; padding : 0 0 5px; } 
#related-posts a { text-decoration : none; } 
#related-posts a:hover { text-decoration : none; } 
#related-posts ul { border : medium none; margin : 10px; padding : 0; } 
#related-posts ul li { display : block;  margin : 0; padding-top : 0; padding-right : 0; padding-bottom : 1px; padding-left : 1px; margin-bottom : 5px; line-height : 2em; border-bottom:1px dotted #cccccc; } 
</style> 
<script src='http://theblogtemplates.com/scripts/Related_posts_hack.js' type='text/javascript'/>


(05)
以下のコードを探す。
<div class='post-footer-line post-footer-line-1'>

(06)
以下のコードを貼付ける
<!-- Related Posts Start -->
<!-- Related Posts 関連記事 -->
<!-- Related Posts -->
<!-- *****************http://hoctro.blogspot.com*****Jan,2007****************** -->
<!-- *****************Related Articles by Labels - Take Two****************** -->
<b:if cond='data:blog.pageType == &quot;item&quot;'>
<div id='related-posts'>

<h4>関連記事</h4>

<br/>
<div id='data2007'/><br/>
   <script type='text/javascript'>

   var homeUrl3 = &quot;<data:blog.homepageUrl/>&quot;;
   var maxNumberOfPostsPerLabel = 4;
   var maxNumberOfLabels = 10;

   maxNumberOfPostsPerLabel = 5;
   maxNumberOfLabels = 5;


   function listEntries10(json) {
   var ul = document.createElement(&#39;ul&#39;);
   var maxPosts = (json.feed.entry.length &lt;= maxNumberOfPostsPerLabel) ? 
                 json.feed.entry.length : maxNumberOfPostsPerLabel;
   for (var i = 0; i &lt; maxPosts; i++) {
   var entry = json.feed.entry[i];
   var alturl;

       for (var k = 0; k &lt; entry.link.length; k++) {
         if (entry.link[k].rel == &#39;alternate&#39;) {
           alturl = entry.link[k].href;
           break;
         }
       }
       var li = document.createElement(&#39;li&#39;);
       var a = document.createElement(&#39;a&#39;);
       a.href = alturl;

if(a.href!=location.href) {
   var txt = document.createTextNode(entry.title.$t); 
   a.appendChild(txt);
   li.appendChild(a);
   ul.appendChild(li); 
}
   }
     for (var l = 0; l &lt; json.feed.link.length; l++) {
       if (json.feed.link[l].rel == &#39;alternate&#39;) {
         var raw = json.feed.link[l].href;
         var label = raw.substr(homeUrl3.length+13);
        var k;
         for (k=0; k&lt;20; k++) label = label.replace(&quot;%20&quot;, &quot; &quot;);
         var txt = document.createTextNode(decodeURIComponent(label));
         var h = document.createElement(&#39;b&#39;);
         h.appendChild(txt);
         var div1 = document.createElement(&#39;div&#39;);
          div1.appendChild(h);
         div1.appendChild(ul);
         document.getElementById(&#39;data2007&#39;).appendChild(div1);
       }
     }
   }
   function search10(query, label) {

   var script = document.createElement(&#39;script&#39;);
   script.setAttribute(&#39;src&#39;, query + &#39;feeds/posts/default/-/&#39;
    + label +
    &#39;?alt=json-in-script&amp;callback=listEntries10&#39;);
   script.setAttribute(&#39;type&#39;, &#39;text/javascript&#39;);
   document.documentElement.firstChild.appendChild(script);
   }

   var labelArray = new Array();
   var numLabel = 0;

   <b:loop values='data:posts' var='post'>
     <b:loop values='data:post.labels' var='label'>
       textLabel = &quot;<data:label.name/>&quot;;
     
       var test = 0;
       for (var i = 0; i &lt; labelArray.length; i++)
       if (labelArray[i] == textLabel) test = 1;
       if (test == 0) { 
          labelArray.push(textLabel);
          var maxLabels = (labelArray.length &lt;= maxNumberOfLabels) ? 
                 labelArray.length : maxNumberOfLabels;
           if (numLabel &lt; maxLabels) {
             search10(homeUrl3, textLabel);
             numLabel++;
          }
       }
     </b:loop>
   </b:loop>
   </script>
</div>
</b:if>
<!-- Related Posts  End -->
<!-- Related Posts 関連記事 -->
<!-- Related Posts -->

(07)
(06)で追加したコードの以下の赤色の部分を変更する。
  • maxNumberOfPostsPerLabel = 5;
    • ラベル毎に表示する関連記事数
  • maxNumberOfLabels = 5;
    • :表示するラベル数

(08)
テンプレートを保存する。


[参考]

Related Posts Widget for Blogger / Blogspot | Best Blog Widgets For Free
http://widgetsforfree.blogspot.com/2009/01/related-posts-widget-for-blogger.html

Blogger に関連記事を導入する方法(1): Hoctro 編 | Blogger カスタマイズ情報ブログ
http://customize-your-blogger.blogspot.com/2009/08/how-to-create-related-posts-1.html

Hoctro's Archived Blog - Trang Lưu Trữ Học Trò: Archived Post: Showing Related Articles to your Post
http://hoctrointro.blogspot.com/2008/09/archived-post-showing-related-articles.html

0 コメント: