Select Blogs: Indonesian Flag Alcosmic alrevis Alrevis

Wednesday, October 21, 2009

Related Posts Widget for Blogger

The advantage of installing the widget Related Posts or so-called "related articles" or "article in the same category as" is allow readers can easily find the articles that are related to the article they are reading without going and open one by one page in the link label. Examples like the one on this blog, at each end of the article there are links of related articles based on the category or the same label. Just for make you understand see a screenshot below:


Okay did not have much to say again, go directly to the manufacturing process :D

Here are the steps:
1. From your Blogger Dashboard Open Layout > Edit HTML.
2. Back up your template before making any changes!
3. Make sure you check the box "Expand Template Widget".
4. Search tags </head>.
5. Add the following code just before the tag </head>.

<style>
#related-posts {
float : left;
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;
background : url("https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJ9ATioUCrfcKgrDGvXHQ89H_jVHmVDj80O1_hnrXGyi0ZDGHvb5-F-PquQCJn8YBqPYEYP3VZ8uFAoGMJvg7ZkOqW29zUMJq76WoIWTpr8HG2NZayVOgwsWtw_Fu331vUkAHwlgDY9h0/") no-repeat 0 0;
margin : 0;
padding-top : 0;
padding-right : 0;
padding-bottom : 1px;
padding-left : 21px;
margin-bottom : 5px;
line-height : 2em;
border-bottom:1px dotted #cccccc;
}
</style>
<script type='text/javascript'>

//<![CDATA[
var relatedTitles = new Array();
var relatedTitlesNum = 0;
var relatedUrls = new Array();
function related_results_labels(json) {
for (var i = 0; i < json.feed.entry.length; i++) {
var entry = json.feed.entry[i];
relatedTitles[relatedTitlesNum] = entry.title.$t;
for (var k = 0; k < entry.link.length; k++) {
if (entry.link[k].rel == 'alternate') {
relatedUrls[relatedTitlesNum] = entry.link[k].href;
relatedTitlesNum++;
break;
}
}
}
}
function removeRelatedDuplicates() {
var tmp = new Array(0);
var tmp2 = new Array(0);
for(var i = 0; i < relatedUrls.length; i++) {
if(!contains(tmp, relatedUrls[i])) {
tmp.length += 1;
tmp[tmp.length - 1] = relatedUrls[i];
tmp2.length += 1;
tmp2[tmp2.length - 1] = relatedTitles[i];
}
}
relatedTitles = tmp2;
relatedUrls = tmp;
}
function contains(a, e) {
for(var j = 0; j < a.length; j++) if (a[j]==e) return true;
return false;
}
function printRelatedLabels() {
var r = Math.floor((relatedTitles.length - 1) * Math.random());
var i = 0;
document.write('<ul>');
while (i < relatedTitles.length && i < 20) {
document.write('<li><a href="' + relatedUrls[r] + '">' + relatedTitles[r] + '</a></li>');
if (r < relatedTitles.length - 1) {
r++;
} else {
r = 0;
}
i++;
}
document.write('</ul>');
document.write('<a rel="dofollow" href="http://alrevis.blogspot.com/2009/10/related-posts-widget-for-blogger.html">Grab this Widget [?]</a></font>');
}
//]]>

</script>

6. Now look for the code <p><data:post.body/></p>. Some templates the code may like this <div class='post-body>.

7. Copy the code below and place under the code <p><data:post.body/></p>!

<b:if cond='data:blog.pageType == "item"'>
<div id="related-posts">
<font face='Arial' size='3'><b>Related Posts : </b></font><font color='#FFFFFF'><b:loop values='data:post.labels' var='label'><data:label.name/><b:if cond='data:label.isLast != &quot;true&quot;'>,</b:if><b:if cond='data:blog.pageType == &quot;item&quot;'>
<script expr:src='&quot;/feeds/posts/default/-/&quot; + data:label.name + &quot;?alt=json-in-script&amp;callback=related_results_labels&amp;max-results=5&quot;' type='text/javascript'/></b:if></b:loop> </font>
<script type='text/javascript'> removeRelatedDuplicates(); printRelatedLabels();
</script>
</div></b:if>

8. Save and see the results:)

Customize
To change the number of posts a link that will be displayed and you can change the number 5 in the code max-results = 5 (code in step 7). Change the number 5 with the number of posts a link you want to show!

4 comments:

Let me know what you think..?