In den vergangenen Tagen habe ich vermehrt Anfragen zu der Blogrolle (siehe rechts unten in der Sidebar) erhalten. Wie mache ich das? Wie baue ich das? Wieso sind die per Zufall drin? Wieso weshalb warum?! Wer nicht fragt bleibt dumm. Und daher möchte ich der Öffentlichkeit natürlich Rede und Antwort stehen. Ich gebe hiermit das Geheimnis preis: Das ist der Code!

<?php

$aBLOGROLL = array(
  "MikeSchnoor.com" => "https://mikeschnoor.com",
  "LoungeMix" => "http://loungemix.de"
 );

$aBLOGROLL_RAND = array_rand($aBLOGROLL, 22);
foreach ($aBLOGROLL_RAND as $KEY => $VAL) {
  echo "<li><a class=\"blogroll\" href=\"";
  echo $aBLOGROLL[$aBLOGROLL_RAND[$KEY]];
  echo "\">";
  echo $aBLOGROLL_RAND[$KEY];
  echo "</a></li> ";
}
?>

Das ganze Snipplet wird einfach mit einer include-Funktion aufgerufen. Sehr unsauber, aber dafür äußerst Effektiv, da keine Datenbankabfragen dafür gestartet werden und so insbesondere bei shared-hosting Providern für ein paar wertvolle Millisekunden sprechen. Freut euch – das ist hiermit mein erstes Open Source Snipplet für alle RSS-Süchtigen Blogrollbastler! Bitte erwähnt mein Blog auch ruhig mal bei euch… danke! ;)

10 Kommentare
  1. Martin sagte:

    Zauberei…

    Seit wann sind denn includes unsauber? Oder meinst du, dass die Blogs von Hand eingetragen werden?

  2. Mike Schnoor sagte:

    Im Prinzip beides… doch eher der Array, denn dieser händische Array ist alles andere als perfekt… alles wirkt für mich eher wie PHP-back-to-the-roots von 2002 ;)

    Wobei sich ja alles eigentlich durch ein komplettes Plugin für WordPress ersetzen lässt, was aus den Blogroll-Link Werten der Datenbank etwas zaubert. Doch dann hat man DB Last und und und und und…

  3. jimlib sagte:

    Erst mal danke für deine Mühe! ;-) Allerdings funktioniert das bei mir nicht. Es kommt immer diese Fehlermeldung:

    Warning: array_rand() [function.array-rand]: Second argument has to be between 1 and the number of elements in the array in /var/www/html/web53/html/wp-content/themes/default_de/sidebar.php on line 72

    Warning: Invalid argument supplied for foreach() in /var/www/html/web53/html/wp-content/themes/default_de/sidebar.php on line 73

    Was bedeutet das bzw. wo könnte das Problem liegen? Ich bin eben leider kein PHP-Fachmann… :-(

  4. Mike Schnoor sagte:

    Ach so na klar – die „22“ ist aus meinem Code – ich zeige in meiner Blogrolle in der Sidebar 22 URLs an. Wenn Du meinen Code übernimmst, hast Du im Array aber nur 2 Einträge (TS&LM). Füge mal 50 Einträge in den Array hinzu, nehme eine schönere Zahl statt 22 (oder einfach ohne den Zusatz) und alles ist gut. ;)

  5. jimlib sagte:

    Ah ok. Werde ich nachher ausprobieren. Scheint ja dann eine etwas umfangreichere Arbeit zu werden.

    Jetzt weiß ich dann auch, was mit der Aussage im ersten Kommentar gemeint ist.

    Danke für die Hilfe!

  6. Basti sagte:

    Wieso einfach, wenn´s auch umständlich geht *g*

    Seit Version 2.1 verfügt WordPress über einen neuen Template-Tag: wp_list_bookmarks()

    Damit geht´s dann super einfach, eine dynamische BlogRolle zu erstellen.

    z.B. wp_list_bookmarks('categorize=0&orderby=rand&limit=22&title_li=0');

    erstellt eine BlogRolle mit 22 zufälligen Einträgen.

  7. Mike Schnoor sagte:

    Die Performance von 1 Array, 1 random Funktion und foreach-echo Statements ist wesentlich schneller als beim Auslesen aus der Datenbank – die Query-Summe steigt intensiv, wenn es über 450 Einträge in der Blogrolle sind. Bei 10-20 ist das unkritisch, aber sobald die Zahl der Verlinkungen steigt, geht’s mir gegen den Strich mit dem Speed ;)

Trackbacks & Pingbacks

  1. jimlibs blog » Blog Archiv » Blogroll-Problem gelöst sagt:

    […] Über den Kommentar bei Mike habe ich jetzt eine sehr schöne Lösung für die Blogroll gefunden: […]

  2. jimlibs blog » Blog Archiv » links for 2007-03-08 sagt:

    […] MikeSchnoor.com: Random-Blogroll Mike hat einen Code für eine zufällige Blogroll-Auswahl geschrieben. Wenn ich Zeit habe, werde ich ihn auch bei mir einbauen… […]

Dein Kommentar

An Diskussion beteiligen?
Hinterlasse uns Deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.