Советы, трюки и секреты для Blogger.com блоггеров. Все для Blogspot. Советы, трюки и секреты для Blogger.com блоггеров. Все для Blogspot.

Как сделать похожие по тематике посты на Blogspot

07 октября 2010, 02:38

Вывод похожих по тематике постов в Блогспот. Многие из вас заметили, что блоггеры очень часто используют в конце своего поста(записи) так сказать виджет(модуль, скрипт) который отображает похожие по тематике посты блога. Это очень полезно, случайный посетитель может дочитав до конца перейти к похожим записям и вполне возможно стать вашим постоянным посетителем. Вот и на блоге ЭВМщик я реализовать данную фичу.
 
Заходим в админку блога, раздел «Макет», меню «Изменить HTML». Ставим галочку «Расширить шаблоны виджета» в верхнем правом углу текстового поля с кодом. Находим в коде строку:
<data:post.body/>
Она отвечает за вывод сообщений блога. После нее добавляем такой код:
 
<b:if cond='data:blog.pageType == &quot;item&quot;'>
<div class='similiar'>
<div class='widget-content'>
<span><b>Похожие по тематике посты - еще почитать:</b></span>
<div id='data2007'/>
<div id='hoctro'><u><a href='http://all-blogspot.com/' style='text-decoration:underline; color:white'>.</a></u></div>
<script type='text/javascript'>
var homeUrl3 = &quot;<data:blog.homepageUrl/>&quot;;
var maxNumberOfPostsPerLabel = 100;
var maxNumberOfLabels = 10;


maxNumberOfPostsPerLabel = 6;
maxNumberOfLabels = 1;


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>

 
Сохраняем и радуемся, так же можете еще покопаться в коде и что нибудь подстроить под себя 
Как сделать похожие по тематике посты на Blogspot