Senin, 26 November 2012

Cara Membuat Artikel Terkait (related post) di bawah Postingan

Sudah cukup lama saya nggak nulis soal tutorial blog. Setelah mikir-mikir, akhirnya saya pilih tutorial cara membuat related post untuk postingan kali ini. Meski ini bukan teknik baru, tampaknya masih banyak blogger yang blognya belum disupport related post. Padahal, fungsi related post atau posting terkait atau artikel yang berhubungan cukup penting. Yakni pengunjung bisa dengan mudah menemukan informasi lain yang masih ada hubungannya dengan artikel yang sedang dibaca.
Keuntungan lain adalah kita bisa ‘mempromosikan’ artikel-artikel lama. Jika halaman blog diibaratkan toko, maka related post ini etalasenya.
Oke, langsung saja ke tutorialnya berikut ini:

1. Login ke blog anda
2. Masuk menu 'Layout-->Edit HTML'
3. Centang kotak 'Expand Widgets Template'
4. Cari kode ini <data:post.body/>
5. Letakkan script berikut ini di bawah kode <data:post.body/> tadi.

<b:if cond='data:blog.pageType == "item"'>
<div class='similiar'>

<div class='widget-content'>
<h3>Related Post</h3>
<div id='data2007'/><br/><br/>
<script type='text/javascript'>

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

maxNumberOfPostsPerLabel = 100;
maxNumberOfLabels = 3;


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(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>

</div>
</b:if>
6. Simpan. Selesai.
Anda bisa mengganti tulisan 'Related Post' dengan kalimat lain misalnya 'posting terkait', 'artikel terkait', dll.
Selamat mencoba.
Update:
Jika dengan script di atas gagal atau tidak jalan, coba ganti dengan script di bawah ini:
<b:if cond='data:blog.pageType == "item"'><br />
   <div class='similiar'><br />
    <div class='widget-content'><br />
    <h3>Related Posts</h3><br />
    <div id='data2007'/><br/><br/><br />
    <script type='text/javascript'><br />
<br />
     var homeUrl3 = &quot;<data:blog.homepageUrl/>&quot;;<br />
     var maxNumberOfPostsPerLabel = 4;<br />
     var maxNumberOfLabels = 10;<br />
<br />
     maxNumberOfPostsPerLabel = 100;<br />
     maxNumberOfLabels = 3;<br />
<br />
<br />
     function listEntries10(json) {<br />
       var ul = document.createElement(&#39;ul&#39;);<br />
       var maxPosts = (json.feed.entry.length &lt;= maxNumberOfPostsPerLabel) ? <br />
                      json.feed.entry.length : maxNumberOfPostsPerLabel;<br />
       for (var i = 0; i &lt; maxPosts; i++) {<br />
         var entry = json.feed.entry[i];<br />
         var alturl;<br />
<br />
         for (var k = 0; k &lt; entry.link.length; k++) {<br />
           if (entry.link[k].rel == &#39;alternate&#39;) {<br />
             alturl = entry.link[k].href;<br />
             break;<br />
           }<br />
         }<br />
         var li = document.createElement(&#39;li&#39;);<br />
         var a = document.createElement(&#39;a&#39;);<br />
         a.href = alturl;<br />
<br />
      if(a.href!=location.href) {<br />
       var txt = document.createTextNode(entry.title.$t); <br />
       a.appendChild(txt);<br />
       li.appendChild(a);<br />
       ul.appendChild(li); <br />
      }<br />
       }<br />
       for (var l = 0; l &lt; json.feed.link.length; l++) {<br />
         if (json.feed.link[l].rel == &#39;alternate&#39;) {<br />
           var raw = json.feed.link[l].href;<br />
           var label = raw.substr(homeUrl3.length+13);<br />
           var k;<br />
           for (k=0; k&lt;20; k++) label = label.replace(&quot;%20&quot;, &quot; &quot;);<br />
           var txt = document.createTextNode(label);<br />
           var h = document.createElement(&#39;b&#39;);<br />
           h.appendChild(txt);<br />
           var div1 = document.createElement(&#39;div&#39;);<br />
            div1.appendChild(h);<br />
           div1.appendChild(ul);<br />
           document.getElementById(&#39;data2007&#39;).appendChild(div1);<br />
         }<br />
       }<br />
     }<br />
     function search10(query, label) {<br />
<br />
     var script = document.createElement(&#39;script&#39;);<br />
     script.setAttribute(&#39;src&#39;, query + &#39;feeds/posts/default/-/&#39;<br />
      + label +<br />
     &#39;?alt=json-in-script&amp;callback=listEntries10&#39;);<br />
     script.setAttribute(&#39;type&#39;, &#39;text/javascript&#39;);<br />
     document.documentElement.firstChild.appendChild(script);<br />
     }<br />
<br />
     var labelArray = new Array();<br />
     var numLabel = 0;<br />
<br />
     <b:loop values='data:posts' var='post'><br />
       <b:loop values='data:post.labels' var='label'><br />
         textLabel = &quot;<data:label.name/>&quot;;<br />
         <br />
         var test = 0;<br />
         for (var i = 0; i &lt; labelArray.length; i++)<br />
         if (labelArray[i] == textLabel) test = 1;<br />
         if (test == 0) { <br />
            labelArray.push(textLabel);<br />
            var maxLabels = (labelArray.length &lt;= maxNumberOfLabels) ? <br />
                   labelArray.length : maxNumberOfLabels;<br />
            if (numLabel &lt; maxLabels) {<br />
               search10(homeUrl3, textLabel);<br />
               numLabel++;<br />
            }<br />
         }<br />
       </b:loop><br />
     </b:loop><br />
     </script><br />
    </div><br />
<br />
   </div><br />
  </b:if><br />

Tidak ada komentar:

Posting Komentar