| 2 comments ]

 Blogger doesn't have ready to be used Related Post Widget.  But, we still can create related post widet based on label.  This related post widget will use Label in Blogger Posting.  Posting with the same label will be displayed in Related Post Widget.  So, the prerequisite to get Blogger Related Post Widget working is you must label in every blogger posting.

Here are steps configuring Blogger Related Post Widget.
1.  You must have label in every blogger posting.
2.  Login to Blogger.
3.  In Blogger Dashboard, choose blog you want to edit, Layout, then Edit HTML, choose Expand Widget Templates.
4.  Add this code below and paste after <head> and before </head> tag or just paste below <head> tag.


<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>');
}
//]]>
</script>

5.  Find Widget Code below,

<b:if cond='data:post.labels'>
<data:postLabelsLabel/>
<b:loop values='data:post.labels' var='label'>
<a expr:href='data:label.url' rel='tag'><data:label.name/></a><b:if cond='data:label.isLast != "true"'>,</b:if>
</b:loop>
</b:if>
 

Add code with bold blue text below,

<b:if cond='data:post.labels'>
<data:postLabelsLabel/>
<b:loop values='data:post.labels' var='label'>
<a expr:href='data:label.url' rel='tag'><data:label.name/></a><b:if cond='data:label.isLast != "true"'>,</b:if>
<b:if cond='data:blog.pageType == "item"'>
<script expr:src='"/feeds/posts/default/-/" + data:label.name + "?alt=json-in-script&amp;callback=related_results_labels&amp;
max-results=10"' type='text/javascript'/>
</b:if>
</b:loop>
</b:if>

6.  Save Tempate.
7.  Open Layout-->Page Element, add new HTML/JavaScript Widget.  Paste code below, and name it Related Post and then Save.

<script type="text/javascript">
removeRelatedDuplicates();
printRelatedLabels();
</script>

8.  Back to Layour-->Edit HTML, click Expand Widget Templates.  Find HTML/JavaScript Widget Related Post Widget we've created before.  Add code with bold and blue below, so that Related Post Widget will show only in Post page.

<b:widget id='HTML13' locked='false' title='Related Post' type='HTML'>
<b:includable id='main'>
<b:if cond='data:blog.pageType == "item"'>
<!-- only display title if it's non-empty -->
<b:if cond='data:title != ""'>
<h2 class='title'><data:title/></h2>
</b:if>
<div class='widget-content'>
<data:content/>
</div>
<b:include name='quickedit'/>
</b:if>
</b:includable>
</b:widget>

9.  Save Template.

2 comments

artealis said... @ May 4, 2011 at 10:43 PM

thx youuuuuu very much sir ^_^v
i finally can make related post link T__T
thx youuu

Phi Mã said... @ July 12, 2015 at 12:10 PM

http://mylove-tn.blogspot.com/

Post a Comment