четверг, 14 апреля 2011 г.

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

http://dperexvatov.blogspot.com/2010/10/blogspot.html

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

Вывод похожих по тематике постов в Блогспот. Многие из вас заметили, что блоггеры очень часто используют в конце своего поста(записи) так сказать виджет(модуль, скрипт) который отображает похожие по тематике посты блога. Это очень полезно, случайный посетитель может дочитав до конца перейти к похожим записям и вполне возможно стать вашим постоянным посетителем. Вот и на блоге ЭВМщик я реализовать данную фичу :) 
Заходим в админку блога, раздел «Макет», меню «Изменить HTML». Ставим галочку «Расширить шаблоны виджета» в верхнем правом углу текстового поля с кодом. Находим в коде строку:
 <data:post.body/>
Она отвечает за вывод сообщений блога. После нее добавляем такой код:
 <b:if cond='data:blog.pageType == &quot;item&quot;'> <div class='similiar'> <p/> <div class='widget-content'> <span><b>Похожие по тематике посты - еще почитать:</b></span> <div id='data2007'/> <div id='hoctro'><u><a href='http://dperexvatov.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>

Сохраняем и радуемся, так же можете еще покопаться в коде и что нибудь подстроить под себя :)

Комментариев нет:

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