Похожие статьи на blogger(вариант 1)

Гаджет показывает список похожих статей на blogger с вашего сайта после поста. Увеличивает количество трафика.


Плюсы гаджета:
1. Отсутствие ссылок на сторонние ресурсы;
2. Возможность исключать из выдачи метки, не имеющие ни одной ссылки;
3. Возможность переименовывать метки в выдаче и объединять разные метки под одним названием;
4. Возможность отдельно указать, какие метки следует всегда исключать из выдачи;
5. Возможность встроить название метки в заголовок;
6. Возможность указать заголовок, который отображается, когда нет ни единой релевантной ссылки;
7. Простота настройки.

Установка

Сохраните на всякий случай ваш шаблон на компьютер.
  1. Дизайн-Изменить HTML.
  2. Поставить галочку на "расшириить шаблоны виджета"
  3. Найти строчку  <data:post.body/>. Сразу после нее вставить код:

<b:if cond='data:blog.pageType == &quot;item&quot;'>

<div class='similiar'>

<div class='widget-content'>

<br/>
<div id='data2007840981'/>
<div id='data2007840980'/><br/>
<script type='text/javascript'>
var headerN = "Похожие статьи:"; /* Заголовок виджета, когда в нём отображается более чем одна метка. */
var header1 = "Еще статьи из категории \"__LABEL__\":"; /* Заголовок виджета, когда в нём отображается одна метка. Если в заголовке есть слово __LABEL__, то вместо него будет подставлено имя метки. */
var header0 = ""; /* Текст, выводимый, если нет ни одной метки и ссылки. */
var homeUrl3 = &quot;<data:blog.homepageUrl/>&quot;; /* Адрес блога, откуда берём список постов. */
var maxNumberOfPostsPerLabel = 5; /* Максимальное число постов, отображаемых для каждой метки. */
var maxNumberOfLabels = 4; /* Максимальное число отображаемых меток. */
var excludeEmptyLabels = true; /* Скрывать ли метки, для которых нет подходящих постов. true - скрывать, false - отображать. */
var excludeLabels = []; /* Метки, которые не следует отображать. */

/* Смена отображаемых имён.
Здесь перечисляем соответствия реального имени метки и названия, которое будет показано на странице.
Если для двух меток указать одно название, они при отображении склеятся в одну метку.
Если метка здесь не перечисляется, то отображается под своим настоящим названием.
*/
var renameLabels = {};
function is_in(item, array) {
for (k in array)
if (array[k] == item) return true;
return false;
}
function label_title(label) {
if (renameLabels[label])
return renameLabels[label];
return label;
}
totalLabels = 0;
receivedReplies = 0;
var receivedItems = [];
var k_label;
function labelReceived() {
receivedReplies++;
if (receivedReplies != totalLabels)
return;
var labelCount = 0;
for (k_label in receivedItems) {
var items = receivedItems[k_label];
if (items.length == 0 &amp;&amp; excludeEmptyLabels)
continue;
labelCount++;
}
var labelCount1 = 0;
for (k_label in receivedItems) {
var items = receivedItems[k_label];
if (items.length == 0 &amp;&amp; excludeEmptyLabels)
continue;
var ul = document.createElement(&#39;ul&#39;);
var itemsCount = 0;
for (var k_item in items) {
item = items[k_item];
var li = document.createElement(&#39;li&#39;);
var a = document.createElement(&#39;a&#39;);
a.href = item.href;
var txt = document.createTextNode(item.title);
a.appendChild(txt);
li.appendChild(a);
ul.appendChild(li);
itemsCount++;
if (itemsCount == maxNumberOfPostsPerLabel)
break;
}
var txt = document.createTextNode(k_label);
var h = document.createElement(&#39;b&#39;);
h.appendChild(txt);
var div1 = document.createElement(&#39;div&#39;);
if (!(labelCount == 1 &amp;&amp; header1.search &amp;&amp; header1.search(/(LABEL)/) != -1))
div1.appendChild(h);
div1.appendChild(ul);
document.getElementById(&#39;data2007840980&#39;).appendChild(div1);
labelCount1++;
if (labelCount1 == maxNumberOfLabels)
break;
}
var txt;
if (labelCount == 1 &amp;&amp; header1)
txt = document.createTextNode(header1.replace("__LABEL__", k_label));
else if (labelCount)
txt = document.createTextNode(headerN);
else if (header0)
txt = document.createTextNode(headerN);
if (txt)
{
var h = document.createElement("h4");
h.appendChild(txt);
document.getElementById(&#39;data2007840981&#39;).appendChild(h);
}
}
function receiveReply_123(json) {
var label = "";
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;);
label = decodeURI(label);
break;
}
}
var labelTitle = label_title(label);
if (typeof receivedItems[labelTitle] != "object")
receivedItems[labelTitle] = [];
for (var k in json.feed.entry) {
var entry = json.feed.entry[k];
var href = "";
for (var kl in entry.link) {
if (entry.link[kl].rel == "alternate") {
href = entry.link[kl].href;
break;
}
}
if(href != "" &amp;&amp; href != location.href) {
var item = { "href" : href, "title" : entry.title.$t};
receivedItems[labelTitle].push(item);
}
}
labelReceived();
}
function sendQueryForLabel(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=receiveReply_123&#39;);
script.setAttribute(&#39;type&#39;, &#39;text/javascript&#39;);
document.documentElement.firstChild.appendChild(script);
}
var parsedlabels = [];
var labelsCount = 0;
function list_items(textLabel) {
if (labelsCount &gt;= maxNumberOfLabels ||
is_in(textLabel, excludeLabels) ||
is_in(textLabel, parsedlabels)) {
labelReceived();
return;
}
labelsCount++;
parsedlabels.push(textLabel);
sendQueryForLabel(homeUrl3, textLabel);
}
<b:loop values='data:posts' var='post'>
<b:loop values='data:post.labels' var='label'>
totalLabels++;
</b:loop>
</b:loop>
<b:loop values='data:posts' var='post'>
<b:loop values='data:post.labels' var='label'>
list_items(&quot;<data:label.name/>&quot;);
</b:loop>
</b:loop>
</script>
</div>
</div>
</b:if>


    4.Изменить настройки под себя. 
    5.Сохранить шаблон.

5 коммент.:

Жизнь Одного Автора комментирует...

Не работает

tux комментирует...

Работает

Sladkoezka комментирует...

Спасибо. работает. Но было непросто сделать

Александр Швец комментирует...

не сработало((

Дмитрий Сигида комментирует...

Можно нормально объяснить как его устанавливать?
Код надо весь копировать и вставлять?Или делать с ним какие нибудь настройки?

Отправить комментарий