www.rookee.ru

Похожие статьи для Blogger

Рубрика: Практика

Перелинковка BloggerПо запросам «похожие статьи blogger«, «похожие посты blogger«, «похожие сообщения blogger» Яндекс не особо порадовал выдачей. Есть кое-какие скрипты, которыми пользуется большинство, но меня они не особо устроили. Потому, порыв блогосферу, наткнулся на замечательного товарища — Doctor VU, который у себя в жж выложил модифицированный скрипт «Ссылки на похожие сообщения для Blogger«. Его и установил. Схожесть ссылки определяется только её принадлежностью к метке.

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

Установка скрипта «Похожие статьи»:
1. Заходим в панель управления блогом и переходим на вкладку «Изменить HTML». Ставим галочку напротив «Расширить шаблоны виджета».
2. Находим строчку <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>

3. Изменяем настройки виджета на свой вкус.
4. Пользуемся!

Если вам необходимы какие-то особые возможности, которые данный код предоставить не в состоянии, вы можете обратиться за помощью, посетив ЖЖ автора скрипта.

Аналогичный скрипт для WP можно найти в теме «Внутренняя оптимизация сайта: перелинковка«.

ПОНРАВИЛСЯ ПОСТ? ПОДЕЛИСЬ ССЫЛКОЙ С ДРУЗЬЯМИ!

Получать новые публикации по электронной почте:

Serpstat

СТАТЬИ ИЗ РУБРИКИ:

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
8 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
webs
webs
10 лет назад

Ебанат сеошник, прежде чем писать «вы можете обратиться за помощью, посетив ЖЖ автора» нужно указать «ссылку» на блог того автора…

seo-aspirant
10 лет назад
Ответить на  webs

Тот, кому действительно нужна помощь, найдёт ЖЖ автора по информации, данной в статье. И не стоит указывать мне, что и как писать.

1monetka
9 лет назад
Ответить на  seo-aspirant

Абсолютно адекватный ответ, в принципе, сам не стараюсь следить за скриптами, которые публикую на блоге, потому что это не реально. С другой стороны, лучше публиковать ИСТОЧНИК найденной статьи, чтобы пользователи могли ориентироваться.

Татьяна
10 лет назад

код не работает

Danielseredin
Danielseredin
10 лет назад

реально не работает скрипт

1monetka
10 лет назад

Авторы статей подобного типа — БАРАНЫ, которые не указывают что поменять в скрипте, чтобы он заработал! Писал у себя в блоге http://www.1monetka.ru/ рабочий вариант скрипта читайте!

seo-aspirant
10 лет назад
Ответить на  1monetka

Скрипты периодически устаревают, а все статьи на блоге поддерживать в актуальном состоянии — сил не хватит 😉

Александр
Александр
7 лет назад

У меня перестали отображаться похожие статьи, хотя код стоит

8
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
()
x