Случайный пост в блоге BlogSpot

четверг, 5 марта 2009 г.
Случайные посты могут быть полезным для новых читателей или посетителей блога, которые только-только открывают ваш проект для себя. Наиболее часто эти ссылки располагают после постов или в сайдбаре. Мало кто будет просматривать весь архив блога, а, увидев несколько ссылок на другие материалы после статьи и найдя для себя что-то интересное, читатель обязательно по ним перейдет. Конечно, чаще всего в конце постов располагают не просто случайные ссылки, а те, которые связаны с тематикой статьи.
Размещая данный блок в сайдбаре, авторы часто совмещают его со списками последних статей и комментариев.

Перед тем, как перейти к описанию процесса установки, хочу сказать пару слов благодарности автору. Он ведет блог под названием «Немецкий дневник».



Спасибо за разработку! Заходите, читайте блог.

Установить случайные посты можно двумя способами – простым добавлением кода и с недавних пор с помощью виджета. Я рассмотрю оба варианта, так как это может пригодиться.

Вариант1.
Заходим в «Макет» - «Редактирование HTML», где перед закрывающимся тегом </head> добавляем код:

<script type="'text/javascript'">
//<![CDATA[
// declare some variables
var blog_url = 'http://YOUR_BLOG_NAME.blogger.com'; // blog main url -> don't forget write your blog url
var randomCnt = 5; // number of random links
var donate = true; // if you want to say thank you, let this variable be true
// tests, if an element exists in given array
function in_array(test_arr, test_number)
{
// create from array a string separated by #
test_arr_str = test_arr.join('#');
test_arr_str = '#' + test_arr_str + '#';

// create search item to search in converted string
test_number_str = '#' + test_number + '#';

// look for search item in converted string
test = test_arr_str.indexOf(test_number_str);
return test;
}
// show donate url
function showDonatePost()
{
// url of donate post
url = 'http://ametov.net';

// get title of a post
title = 'Ametov.net';

titleData = document.createTextNode(title);
tag_a = document.createElement('a');
tag_a.href = url;
tag_li = document.createElement('li');
tag_li.id = 'donate_widget_random_posts';
tag_a.appendChild(titleData);
tag_li.appendChild(tag_a);
document.getElementById('widget_random_posts').appendChild(tag_li);
}
// make a post visible - show post url and title
function showPost(root)
{
var feed = root.feed;
var entries = feed.entry || [];
var entry = feed.entry[0];

for(var j=0; j<entry.link.length; j++)
{
if (entry.link[j].rel == 'alternate')
{
// get url of a post
url = entry.link[j].href;

// get title of a post
title = entry.link[j].title;

// if there is no title replace it with url
if (title == '') title = url;

titleData = document.createTextNode(title);
tag_a = document.createElement('a');
tag_a.href = url;
tag_li = document.createElement('li');
tag_a.appendChild(titleData);
tag_li.appendChild(tag_a);
if (donate)
{
document.getElementById('widget_random_posts').insertBefore(tag_li, document.getElementById('donate_widget_random_posts'));
}
else
{
document.getElementById('widget_random_posts').appendChild(tag_li);
}
}
}
}
// get info as json string for given post
function getPost(postNumber)
{
script = document.createElement('script');
script.src = blog_url + '/feeds/posts/summary?start-index='+postNumber+'&amp;max-results=1&amp;alt=json-in-script&amp;callback=showPost';
script.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(script);
}
// get random posts for given blog
function getRandomPosts(root)
{
var feed = root.feed;
var total = parseInt(feed.openSearch$totalResults.$t,10);
var randomNumber, test;

var random_numbers = new Array(randomCnt);
if (donate) showDonatePost();

for (var i=0; i<randomCnt; i++)
{
randomNumber = -1;
test = -1;
// this cicle is to avoid of post repeats
do
{
randomNumber = Math.ceil(Math.random()*total);
test = in_array(random_numbers, randomNumber);
}
while(test != -1)

random_numbers[i] = randomNumber;
getPost(randomNumber);
}
}

// the main function, which get first number of posts and from which
// would be called all other functions above
function showRandomPosts()
{
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = blog_url + '/feeds/posts/summary?max-results=0&amp;alt=json-in-script&amp;callback=getRandomPosts';
document.getElementsByTagName('head')[0].appendChild(script);
}
//]]>
</script>
Здесь в самом начале есть несколько параметров, на которые следует обратить внимание.

blog_url – ссылка на ваш блог (http://мой-блог.blogger.com)
randomCnt – количество случайных ссылок.
donate – ставите true, если захотите поблагодарить автора за скрипт и false в противном случае.

Далее в шаблоне или создав в сайдбаре элемент типа HTML/Javascript добавляем код:
<script type='text/javascript'>
// main function call
showRandomPosts();
</script>

<ul id='widget_random_posts'>
</ul>
Он отвечает непосредственно за вывод ссылок.

Вариант2. Виджет случайных постов.
В нем кода немного поменьше, так как скрипт располагается вне блога. Чтобы установить заходите в раздел панели управления «Макет», добавляете элемент типа HTML/JavaScript, куда вставляете код:
<script type='text/javascript'>
var blog_url = 'http://blogohelp.blogspot.com';
var randomCnt = 5;
var donate = true;
</script>
<script src='http://ametov.net/widgets/widget_random_posts.js' type='text/javascript'></script>
<script type='text/javascript'>
// main function call
showRandomPosts();
</script>
<ul id='widget_random_posts'>
</ul>
Здесь используются те же переменные, что и в предыдущем варианте.

Если есть какие-то вопросы, можете задавать в комментариях или на сайте автора скрипта. Не забывайте указывать в переменных адрес своего блога. Единственное, что у меня не получилось работать с BlogSpot проектом, у которого подключен купленный домен, а так работу виджета и самого скрипта я протестировал.

P.S. Предлагаю почитать мой обзор: LinkedIn - лучшая деловая социальная сеть.

Футбол лига чемпионов - новости, команды, результаты.

Оригинальные фонтаны на любой вкус.
Понравился пост? Подпишись на обновления блога по BlogoHelp RSSRSS, BlogoHelp по EmailEmail или twitter!
Как вам пост?   
Related Posts with Thumbnails