2008-03-23

Popular posts - иллюстратор спроса и предложения

UPD: Данный способ больше не работает, т. к. Google сменил формат URL прикрепленных файлов в Groups. Рекомендую воспользоваться вариантом Михаила.

Я давно ломал голову, как прикрутить на blogspot колонку с популярными записями, которые ранжируются на основе количества переходов. Все что попадалось при гуглении было жутко убого. Но не все так печально, гугленье и труд — все перетрут. Пусть найденное решение смотрится отнюдь не элегантно, но зато все работает как надо. Что и требовалось.
Для написания статьи использовались следующие англоязычные опусы:
No Google Analytics API? No Problem!
Most Popular Posts list for blogger

Оборудование:
- Установленный Google Analytics в блоге;
- Специально созданная Google Group;
- Аккаунт на Gmail;
- Настроенный отчет на Analytics, который кидает XML-файл на почту;
- Настроенный фильтр для пересылки отчетов в groups;
- Настроенный Yahoo! pipe для создания выходного контента.

Ход работы:
1. Отправляемся на Google Groups и создаем новую группу с параметрами, указанными на рисунке.

Шаг №1

2. Открываем "Настройки группы", вкладка "Доступ". Устанавливаем разрешение на просмотр для всех пользователей.

Шаг №2

3. В Gmail'е создаем фильтр. В поле "Содержит слова" необходимо указать какое-нибудь слово, дабы в будущем перенаправлять отчеты в группу. У меня указано Analytics. Ставить галочку напротив "имеет приложение".

Шаг №3

4. Нажимаем кнопку "Следующее действие" выставляем активными checkbox'ы "Пропустить входящие" и "Переслать письмо". В качестве адреса электронной почты устанавливаем e-mail, полученный после регистрации группы.

Шаг №4

5. Переходим на страницу Google Analytics. Открываем секцию "Самое популярное содержание", затем "Просмотреть полный отчет". Необходимо изменить количество отображаемых строк с 10 до 50. Затем нажимаем кнопку "Электронная почта", вкладка "Расписание". Поле "Тема" должно содержать аналогичное слово, которое используется для фильтра в Gmail (шаг №3). Меняем формат на XML и периодичность устанавливаем на "Раз в месяц". Подтвердим решение, щелкнув на кнопке "Расписание".

Шаг №5

6. Возвращаемся к настройкам отправления отчетов, вкладка "Отправить". Проделав последовательность, описанную в предыдущем шаге, отправим себе тестовый отчет.

Шаг №6

7. Теперь дело за Yahoo! Pipes. Регистрируемся, если не имеете аккаунта. Потом забираем мой pipe, щелкнув на кнопке "Clone". Далее редактируем его (Edit Source), изменяя поля указанные на рисунке сообразно своим данным. В моем случае это:

http://groups.google.com/group/koloda/feed/rss_v2_0_msgs.xml
http://drakulavich.blogspot.com


Шаг №7

Сохраняемся, копируем куда-нибудь адрес JSON (More options -> Get as JSON).
8. Зайдем к себе в гости на Blogger.com. Редактируем Макет, щелкаем Add a Page Element, указав HTML/Java Script. Назовите виджет по усмотрению и скопируйте содержания скрипта:

<div id="popularposts"><noscript>Please enable javascript to view the most popular posts list.</noscript></div>
<script type="text/javascript">
<!--
// Robust pipe-output-handling function
// as found at http://techknack.blogspot.com/2008/01/most-popular-posts-list-for-blogger.html
function topcontentCallback(obj) {
try {
var url,title,output;
output='<ul>';
for (i=0; i< obj.count; i++) {
url = obj.value.items[i].url;
try {
title = obj.value.items[i].name[0].content;
title = title.replace('<title>', '');
title = title.replace('</title>', '');
title = title.replace('Крапленная колода: ', '');
}
// if we didn't get the title (bad Pipe!), give a pseudo-
// title from the URL
catch (e) {
title = url.substring(url.lastIndexOf("/")+1,
url.lastIndexOf(".html"))
.replace(/\-/g, " ");
}
//remove the <title> tags the pipe leaves in.
output+= '<li><a href="'+url+
'" title="'+title+'">'+title+'</a></li>';
}
output += '</ul>';
document.getElementById("popularposts").innerHTML = output;
}
catch (e) {
var error = "Error fetching data: "+e;
if (e.toString().indexOf('i')!=-1) error += "<br />i: "+i;
document.getElementById("popularposts").innerHTML=error;
}
}
//-->
</script>
<script src="http://pipes.yahoo.com/pipes/pipe.run?_id=9b007deaee3d3377c2313af6f01d89ac&_render=json&_callback=topcontentCallback" type="text/javascript"> </script>


Не забудьте поменять "Крапленная колода" на название своего блога, а также вставить свой адрес JSON.
Сохраняем и любуемся!

После вышеперечисленных шагов вы получите ничуть не дикий, но симпотишный виджет, который будет вещать посетителям о самых популярных записях вашего блога.

9 комментариев: ответить

25.03.2008, 14:36   George-Perec комментирует...

Славно поработали,спасибо))Применил у себя в блоге.Сюжет закручен как в детективе))

25.03.2008, 14:43   drakulavich комментирует...

> Сюжет закручен как в детективе))
Это точно. Раз 10, наверное, пытался заставить себя прикрутить это виджет. Повозиться пришлось порядком. Зато результатом я доволен. Рад, что кому-то пригодилась эта басня =)

25.03.2008, 17:18   George Perec комментирует...

Шаблон у нас одинаковый.Хочу спросить насчёт header-a.Не подскажите где изменить html, чтобы высоту header-a сделать больше?

25.03.2008, 19:30   drakulavich комментирует...

Не знал, но, как оказалось, все просто.
Ищем в шаблоне конструкцию

#header {
background:$startSide bottom;
padding:0 15px 8px;
}


и добавляем строку с параметром height. Например,
height:300px;

Voila!

25.03.2008, 21:24   George Perec комментирует...

Спасибо,именно это действие произвёл самостоятельно,покопавшись в шаблоне

22.05.2008, 21:54   Dan Rastor комментирует...

Отличная работа. Но я использую более простой способ для получения таких постов: feedjit.com

30.05.2008, 10:25   Imbolc комментирует...

Вах, красатень :)

Такой вопрос: Аналитикс даёт топ10, где установлено ограничение в 5?

И может, быть есть подобная неожиданная идея по реализации also liked (что ещё смотрят посетители этой страницы)?

30.05.2008, 14:17   drakulavich комментирует...

По поводу also liked, нереально.
Ограничение на 5 элементов установлено в верхнем окошке Truncate.

12.10.2009, 17:46   drakulavich комментирует...

Этот хитрый способ больше не работает. Воспользуйтесь советом virens, ссылка на статью приведена в начале статьи.

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