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 и создаем новую группу с параметрами, указанными на рисунке.
2. Открываем "Настройки группы", вкладка "Доступ". Устанавливаем разрешение на просмотр для всех пользователей.
3. В Gmail'е создаем фильтр. В поле "Содержит слова" необходимо указать какое-нибудь слово, дабы в будущем перенаправлять отчеты в группу. У меня указано Analytics. Ставить галочку напротив "имеет приложение".
4. Нажимаем кнопку "Следующее действие" выставляем активными checkbox'ы "Пропустить входящие" и "Переслать письмо". В качестве адреса электронной почты устанавливаем e-mail, полученный после регистрации группы.
5. Переходим на страницу Google Analytics. Открываем секцию "Самое популярное содержание", затем "Просмотреть полный отчет". Необходимо изменить количество отображаемых строк с 10 до 50. Затем нажимаем кнопку "Электронная почта", вкладка "Расписание". Поле "Тема" должно содержать аналогичное слово, которое используется для фильтра в Gmail (шаг №3). Меняем формат на XML и периодичность устанавливаем на "Раз в месяц". Подтвердим решение, щелкнув на кнопке "Расписание".
6. Возвращаемся к настройкам отправления отчетов, вкладка "Отправить". Проделав последовательность, описанную в предыдущем шаге, отправим себе тестовый отчет.
7. Теперь дело за Yahoo! Pipes. Регистрируемся, если не имеете аккаунта. Потом забираем мой pipe, щелкнув на кнопке "Clone". Далее редактируем его (Edit Source), изменяя поля указанные на рисунке сообразно своим данным. В моем случае это:http://groups.google.com/group/koloda/feed/rss_v2_0_msgs.xml
http://drakulavich.blogspot.com
Сохраняемся, копируем куда-нибудь адрес 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 комментариев: ответить
Славно поработали,спасибо))Применил у себя в блоге.Сюжет закручен как в детективе))
> Сюжет закручен как в детективе))
Это точно. Раз 10, наверное, пытался заставить себя прикрутить это виджет. Повозиться пришлось порядком. Зато результатом я доволен. Рад, что кому-то пригодилась эта басня =)
Шаблон у нас одинаковый.Хочу спросить насчёт header-a.Не подскажите где изменить html, чтобы высоту header-a сделать больше?
Не знал, но, как оказалось, все просто.
Ищем в шаблоне конструкцию
#header {
background:$startSide bottom;
padding:0 15px 8px;
}
и добавляем строку с параметром height. Например,
height:300px;
Voila!
Спасибо,именно это действие произвёл самостоятельно,покопавшись в шаблоне
Отличная работа. Но я использую более простой способ для получения таких постов: feedjit.com
Вах, красатень :)
Такой вопрос: Аналитикс даёт топ10, где установлено ограничение в 5?
И может, быть есть подобная неожиданная идея по реализации also liked (что ещё смотрят посетители этой страницы)?
По поводу also liked, нереально.
Ограничение на 5 элементов установлено в верхнем окошке Truncate.
Этот хитрый способ больше не работает. Воспользуйтесь советом virens, ссылка на статью приведена в начале статьи.