В одном из своих предыдущих постов я уже рассказывал об одной такой небольшой случайной ссылке, весьма оригинальном и неприхотливом виджете. Сегодня же речь пойдет о виджете случайных статей, уже с возможностью настройки количества анонсируемых постов.
Разработчик данного виджета достаточно интересный человек и, как приятное, автор замечательного блога "Немецкий дневник". Он предлагает два варианта установки, кои я и рассмотрю ниже.
В этом варианте скрипт виджета случайных статей располагается на внешнем ресурсе, отчего достаточно вписать код, указанный далее, в поле гаджета HTML/JavaScript и будет вам счастье. Однако для надежности вы можете скачать скрипт автора по ссылке из кода http://ametov.net/widgets/widget_random_posts.js и залить его на свой хостинг, после чего заменить аналогичную строку в коде виджета.
Код виджета случайных статей:
<script type='text/javascript'> var blog_url = 'http://bloggarolla.ru'; 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>Немного о настройках списка случайных статей.
- var blog_url - адрес вашего блога;
- var randomCnt - количество выводимых случайных статей.
<script type="'text/javascript'"> //<![CDATA[ // declare some variables var blog_url = 'http://АДРЕС_ВАШЕГО_БЛОГА.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+'&max-results=1&alt=json-in-script&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&alt=json-in-script&callback=getRandomPosts'; document.getElementsByTagName('head')[0].appendChild(script); } //]]> </script>Здесь также настройте виджет аналогично определениям первого способа установки.
<script type='text/javascript'> // main function call showRandomPosts(); </script> <ul id='widget_random_posts'> </ul>Сохраните шаблон и наслаждайтесь работой виджета случайных статей в блоге.