Dienstag, 6. Januar 2009

Blogger.com und zufällige Posts

Ich vermute mal, viele wollen Ihr Blog von mehreren Seiten zeigen. Ich natürlich auch, aber wie schafft man das, die Besucher auch auf andere Seiten zu locken?!

Manche geben Links auf die letzten Artikeln, bei den anderen sieht man Verlinkungen auf meist kommentierte Posts.

Und ich hatte an die zufällige Posts gedacht und, dass es vielleicht gar keine schlechte Idee wäre, dem Schicksal die Arbeit zu überlassen, meinen Besuchern den Inhalt zu zeigen.

Ich habe ein kleines Skript geschrieben, das mehrere zufällige Links eines Blogs @ Blogger.com erstellt und diese als eine Liste darstellt.

Installation
1. Schritt. Funktionen.

Bemerkung zu Einstellungen:
var blog_url = 'http://D_E_I_N__B_L_O_G.blogger.com'
var randomCnt = gewuenschte_Anzahl_der_Links.
var donate = true Falls Ihr mich danken wollt. Es erscheint am der Liste Link auf meine Seite
var donate = false Falls Ihr doch irgendwie anders mich danken wollt

Fügt am besten den folgenden Code vor dem </head>-Tag hinzu.

<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+'&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>


2.Schritt. Anzeige der Links auf zufällige Artikeln.

Dieser Code zeigt die Liste mit zufälligen Artikeln. Fügt diesen dorthin hinzu, wo Ihr die Link-Liste sehen möchtet.

<script type='text/javascript'>
// main function call
showRandomPosts();

</script>

<ul id='widget_random_posts'>
</ul>


P.s.
Die Hilfe beim Blogger.com hat nicht wirklich geholfen, dafür aber ein Beispiel aus dem Netz, das ich etwas angepasst hatte.

Testen Sie jetzt die Süddeutsche Zeitung 2 Wochen kostenlos und unverbindlich!

Andere Posts:

1 Kommentar:

calimero hat gesagt…

Hi,

kennst du eine möglichkeit die 5 meist kommentierten Postings auf blogger anzeigen zu lassen?!

Ich benutze allerdings keine Layout vorlage, sondern eine eigene, mir bleiben daher die blogger widgets verwährt.

Hast du da eine Idee?!

Meld dich mal: info@blogschrift.biz

Danke!