21 May 2010

Related Posts widget for blogger (based on Labels)

Advertisements

Here I am presenting a new version 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. Visit demo site so that you will easily understand what I am said.

http://wpboxedtech1.blogspot.com/2010/05/rpg-maker-vx-102.html

Live DEMO

Thanks to the Mr.Hedy Damian for this widget. Source of the widget((indonesian language)) - http://www.ateonsoft.com/2008/12/related-post-cantik-untuk-meningkatkan.html

So let's add this quickly to your blog.

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>

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 times. Add 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>
</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;



My other versions of related posts widget:
  1. Related Posts/Similar Posts widget for blogger (2 different methods)
  2. Related Posts with Thumbnail Widget
  3. LinkWithin Widget (Similar/Related posts with images) for Blogger/Wordpree/Typepad.

Related Posts

8 comments

Hagen Love
May 22, 2010 at 12:28 AM

Wow this is beautiful.
Works 100%.
Extremely easy.
Thanks Drraman.

Anonymous
May 23, 2010 at 10:40 PM

Hi first of all thanks for posting useful widgets.Your blog is nice. I have a doubt. How can i remove the label name under related posts.I just wanna display post titles and not the labels.

Can u help me with this

May 24, 2010 at 4:02 AM

Then use this widget
http://free-blogger-help.blogspot.com/2010/01/related-postssimilar-posts-widget-for.html

Selena
July 16, 2010 at 7:35 AM

I have
<data:post.body/>
3 times???/

July 16, 2010 at 7:36 AM

then add after third
<data:post.body/>
just after closing tag like
</b:if>
</div>

Anonymous
November 5, 2010 at 11:28 AM

It doesn't work with foreign characters such as ç, ö, ü etc. What should I do?

November 6, 2010 at 12:32 AM

It also have problem with ( )

So avoid these characters in your labels.

Anonymous
November 6, 2010 at 4:56 AM

I see. Thank you.

Post a Comment

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites More