Вообще-то название “Most Commented Posts” лучше переводить, как “Наиболее комментируемые статьи”, но в ру-нете почему-то принято называть “Популярные статьи”, хотя популярность и комментируемость не всегда идут “рука об руку”. Этот виджет широко используют блоггеры, ведущие свои блоги на платформе WordPress, а вот на платформе Blogger мне этот виджет не попадался, за исключением виджета использующего YAHOO Pipes от BloggerBuster, но он, к сожалению, выводит в список URL, а не названия статей, что, как мне кажется, не вполне профессионально. Я попытался исправить этот дисбаланс.
Описание
Виджет выводит список наиболее комментируемых статей в порядке убывания числа комментариев. Устанавливается одним “копи-пастом” (copy-paste). Минимальное количество настроек позволяет использовать виджет даже неискушенным в кодировании блоггерам 😉
Установка
Установка производится в три шага:
- Зайдите в “Панель управления” вашего блога. Перейдите на закладку Макет-Элементы страницы.
- Добавьте на панели гаджетов новый гаджет HTML/JavaScript. Дайте ему название (например: “Популярные статьи”). Вставьте код виджета.
- Проведите настройку виджета. Сохраните виджет, а затем и сам макет.
Код виджета:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
<!-- Most Commented Posts START --> <div id="mx-mcp"></div> <script> var maxList = 5; // Количество выводимых постов var commStr = "Комментариев"; // Комментариев, Comments - на выбор var baseUrl = "//YOUR_BLOG_NAME_HERE.blogspot.com/"; //URL Вашего блога. Не забудьте об обратном слэше в конце var maxResults = 100; // Глубина сканирования var postsUrl = "feeds/posts/default?alt=json-in-script&callback=listPosts&amp;max-results=" + maxResults; var commentsUrl = "feeds/comments/default?alt=json-in-script&callback=listCommentss&max-results=" + maxResults; function oPost(title, url, num) { this.title = title; this.url = url; this.num = num; } function doSrcMcp() { var container = document.getElementById("mx-mcp"); var srcP = document.createElement("script"); var srcC = document.createElement("script"); srcP.type = "text/javascript"; srcC.type = "text/javascript"; srcP.src = baseUrl + postsUrl; srcC.src = baseUrl + commentsUrl; container.appendChild(srcP); container.appendChild(srcC); } var aPosts = new Array(); var aComments = new Array(); function listPosts(root) { var feed = root.feed; var entries = feed.entry || []; for (var i = 0; i < entries.length; ++i) { var entry = entries[i]; var title = entry.title.$t; var url = ""; for (var j = 0; j < entry.link.length; j++) { if (entry.link[j].rel == 'alternate') url = entry.link[j].href; } aPosts.push(new oPost(title, url, 0)); } } function listComments(root) { var feed = root.feed; var entries = feed.entry || []; var maxNum = 0; for (var i = 0; i < entries.length; ++i) { var entry = entries[i]; var url = ""; for (var j = 0; j < entry.link.length; j++) { if (entry.link[j].rel == 'alternate') url = entry.link[j].href; } aComments.push(url); } for (var i = 0; i < aPosts.length; i++) { for (var j = 0; j < aComments.length; j++) { if (aComments[j].indexOf(aPosts[i].url) == 0) aPosts[i].num++; if (aPosts[i].num > maxNum) maxNum = aPosts[i].num; } } var container = document.getElementById("mx-mcp"); var divFooter = document.createElement("div"); var aFooter = document.createElement("a"); divFooter.style.fontSize = "x-small"; aFooter.appendChild(document.createTextNode("minimus")); aFooter.href = "//blogcoding.ru/"; divFooter.appendChild(document.createTextNode("Widget by ")); divFooter.appendChild(aFooter); var numList = 0; for (var i = maxNum; i > 0; i--){ for (var j = 0; j < aPosts.length; j++){ if (aPosts[j].num == i){ var br = document.createElement("br"); var a = document.createElement("a"); var div = document.createElement("div"); a.appendChild(document.createTextNode(aPosts[j].title)); a.href = aPosts[j].url; div.appendChild(document.createTextNode(" (" + commStr + ": " + aPosts[j].num + ")")); container.appendChild(a); container.appendChild(br); container.appendChild(div); numList++; } if (numList >= maxList) break; } if (numList >= maxList) break; } container.appendChild(divFooter); } doSrcMcp(); </script> <!-- Most Commented Posts END --> |
Настройка
-
URL Вашего блога: var baseUrl = “//YOUR_BLOG_NAME_HERE.blogspot.com/”; Вставьте URL ВАШЕГО блога. И не забывайте поставить обратный слэш в конце URL!
-
По умолчание виджет выводит список из пяти позиций: var maxList = 5; измените это значение, если хотите выводить больше или меньше позиций.
-
Количество комментариев к каждой позиции (статье) выводится строкой (Комментариев: Х): var commStr = “Комментариев”;. Для локализации виджета измените этот параметр (например на значение Comments).
Update 08.01.2009: Добавлен параметер для настройки глубины сканирования – maxResults.
© 2008 – 2013, minimus. Все права защищены. При копировании и републикации статьи, ссылка на первоисточник обязательна.
хороший виджет, спасибо