Add Related Posts Widget For Blogger (Based On Labels)

Add Related Posts Widget For Blogger (Based On Labels)

Here I am presenting a new type of Related Posts widget for blogger. It is based on Labels i.e. it shows the results of specific labels/categories you give to your posts. So let's add this quickly to your blog.

How To Add This Widget

  1. Go to Blogger Dashboard > Layout > Edit HTML > Download Full Template (for Backup) and click on Expand Widget Templates box.
  2. Press CTRL + F and search for ]]></b:skin> 
  3. Add following code BEFORE ]]></b:skin>
<!-- related post -->

.rbbox{border: 1px solid rgb(192, 192, 192);
padding: 5px;
background-color: #f0f0f0;
-moz-border-radius:5px;
margin:5px;
}
.rbbox:hover{background-color: rgb(255, 255, 255);
}
#relpostFs {
border: 1px solid rgb(204, 204, 204);
margin: 0;
padding: 3px 5px;
overflow: auto;
max-height: 200px;
-moz-border-radius:5px;}
<!-- /related post -->

    3. Now look for <data:post.body/>
    If you are using "Read More" feature then it will present TWO timesAdd following code AFTER Second <data:post.body/>
    <!-- related post -->
    <b:if cond='data:blog.pageType == &quot;item&quot;'>
    <H3>Related Post</H3>
    <DIV class='rbbox'>
    <DIV id='relpostFs'>
    <DIV id='albri'/>
    <SCRIPT type='text/javascript'>
    var homeUrl3 = &quot;<data:blog.homepageUrl/>&quot;;
    var maxNumberOfPostsPerLabel = 10;
    var maxNumberOfLabels = 10;
    maxNumberOfPostsPerLabel = 100;
    maxNumberOfLabels = 2;
    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;albri&#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>
    <script type='text/javascript'>RelPost();</script>
    </DIV>
    <a href="http://chandeepsblogtips.blogspot.com/2011/07/related-posts-widget-for-blogger-based.html" title="Related Posts widget for blogger (based on Labels)"><span class="getfloat">widgets by blogtips</span></a>
    </b:if>
    <!-- /related post -->

    Save template and look the changes.

    CUSTOMIZATION
    -------------------------
    You can change following parameteres
    var maxNumberOfPostsPerLabel = 10;
    var maxNumberOfLabels = 10;
    maxNumberOfPostsPerLabel = 100;
    maxNumberOfLabels = 2;


    Share this

    Related Posts

    Previous
    Next Post »