Etwas fürs Archiv (1):
Geordnetes Monatsarchiv

Monate und Jahre Der erste von zwei weitereren kleinen WordPress-Tips, diesmal für die Archivseite. Dorthin packt man ja gerne eine Übersicht über alle Beiträge nach Monaten und nach Kategorien, und in einigen Themes steckt so eine Funktionalität bereits drin, einige Plugins bieten ebenfalls diverse Funktionen.

Wie man solche Archive mit Bordmitteln, nämlich der Funtion wp_get_archives() und einer Theme-Template-Seite macht, hat etwa Perun im Januar beschrieben; für das Kategorienarchiv benutze ich diese auch. Für mein Monatsarchiv hab ich aber „natürlich“ eine eigene Funktion geschrieben, die mir eine schönere Darstellung nach Jahren gruppiert bietet – darum geht es in diesem Beitrag. In ein paar Tagen zeige ich euch dann den Code für die Schlagwort-Mehrfachauswahl, die ihr bereits auf der Archivseite findet.

Stellt sich nur generell die Frage, ob allzu viele Besucher diese Archiv-Funktionalität auch wirklich nutzen… aber egal, im Zweifelsfall betrachtet’s man einfach als ein bisschen Blog-Spielerei.^^

In diesem Fall hab ich den PHP-Code direkt in die Seite geschrieben (im HTML-Editor von WordPress) – weshalb auch das <?php...?>-Tag mittendrin steht –, da ich hier eh schon das Plugin Exec-PHP einsetze, das ebendies ermöglicht1. Alternativ kann man den Code natürlich auch anderweitig unterbringen, etwa über entsprechende Unterscheidungen im Theme oder komfortablerweise per Template – siehe Peruns Artikel.

Wie ihr auf dem Bild oben erkennen dürftet, sind hier Monate vor dem Blogbeginn und nach dem aktuellen Datum gar nicht dargestellt und Lücken der Regelmäßigkeit halber grau; zudem – was aber nur eine Stylingfrage ist – gibt’s keine unnötigen ansonsten listentypischen • Bullets und Einrückungen. Und in Klammern steht die Anzahl der Beiträge.

Das ist der Code dazu:

<style type="text/css">
div.yeararch { float: left; color:#777; margin-right: 2em; }
ul.montharch { list-style-type: none; padding-left: 0px; }
</style>

<?php global $wpdb;
$mnames = array (1=>'Januar', 2=>'Februar', 3=>'März', 4=>'April', 5=>'Mai', 6=>'Juni', 7=>'Juli', 8=>'August', 9=>'September', 10=>'Oktober', 11=>'November', 12=>'Dezember');
$started = false;
$years = $wpdb->get_results("SELECT YEAR(post_date) AS year, COUNT(*) AS count
FROM $wpdb->posts
WHERE post_type='post'
  AND post_status='publish'
GROUP BY year
ORDER BY year ASC");
foreach ($years as $y) {
  echo '<div class="yeararch"><h4><a href="/'.$y->year.'/">'.$y->year.'</a> <small>('.$y->count.')</small></h4><ul class="montharch">';
  $months = $wpdb->get_results("SELECT MONTH(post_date) AS month, COUNT(*) AS count
  FROM $wpdb->posts
  WHERE post_type='post'
    AND post_status='publish'
    AND YEAR(post_date)=$y->year
  GROUP BY month
  ORDER BY month ASC");
  $ms = array();
  foreach ($months as $m) { $ms[$m->month] = $m->count; }
  for ($i=1; $i<=12; $i++) {
    $m0 = sprintf('%02d',$i);
    $mname = $mnames[$i];
    if ($ms[$i]>0) {
      echo '<li><a href="/'.$y->year.'/'.$m0.'/">'.$mname.'</a> ('.$ms[$i].')</li>';
      $started = true;
    } else {
      if ($y->year<date('Y') || $i<=date('n')) {
        if (!$started) echo '<li>&nbsp;</li>'; else echo '<li>'.$mname.' (0)</li>';
      }
    }
  }
  echo "</ul></div>\n";
}
?>

<div style="clear:both;"></div>

Großes Hexenwerk ist der Code nicht: Nach der kleinen CSS-Definition (direkt auf der Seite, da ja nur hier benötigt) schaut der PHP-Code erst in der Datenbank nach, welche Jahre denn in Frage kommen – YEAR(post_date) AS year ... GROUP BY year – und nimmt auch die Beitragsanzahl – COUNT(*) AS count gleich mit.

Für jedes Jahr wird dann ein div-Container generiert, die dank des CSS am Anfang nebeneinander stehen – so viele wie halt auf die Seite passen, bei mir geht’s 2011 dann darunter weiter; ihr könnt ja mit den Abständen (margin-right) spielen. (Der div am Ende mit clear:both; sorgt dafür, dass nachfolgender Text darunter und nicht daneben landet.)

Dann gibt’s für jedes Jahr natürlich eine analoge Datenbank-Abfrage für die nach Monaten gruppierten Beiträge des jeweiligen Jahres, die dann nacheinander ausgegeben werden. Da diese Abfrage nur so viele Array-Einträge liefert, wie Monate benutzt wurden, sortiere ich sie ins Array $ms um, um in der Schleife alle Monate von 1 bis 12 durchlaufen und für leere Monate je nachdem, ob das Blog noch gar nicht begonnen wurde (!$started) oder ob es eine Lücke ist, eine Leerzeile bzw. eine nicht verlinkte Zeile mit der traurigen Null ausgeben zu können.

(Die Monatsnamen bekäme man an sich auch eleganter über PHP-Funktionen, aber irgendwie hatte ich da Probleme im Zusammenhang mit meiner Sprachumschaltung, deshalb die Lösung mit dem $mnames-Array.)

Bei den Links zu den Monatsarchivseiten geht der Code davon aus, dass sie dem Schema /2009/12/ folgen – wer ein anderes Schema mit pretty permalinks verwendet (kommt das denn vor?), muss sie entsprechend anpassen, ebenso wer die „unschöne“ Variante mit ? und Argumenten verwendet; das wäre dann ?m=200912 etc.

So, das war der erste Beitrag zum Archiv – wer Fragen, Anregungen, Verbesserungsvorschläge o.ä. hat, möge jetzt sprechen oder für immer schweigen… Wie erwähnt geht’s dann demnächst um die Mehrfachauswahl bei den Schlagwörtern, aber vielleicht schiebe ich auch noch die Einbindung von WP.com-Stats anstelle von WP-PostViews für die Ermittlung der beliebtesten Beiträge dazwischen, wie Robert angeregt hatte. Mal sehen.

  1. Nebenwirkung: Man muss den HTML-Editor von WordPress verwenden, weil der visuelle nicht mehr möglich ist. []

Das Fegefeuer hat versagt

Bischof Walter Mixa 2008 Wie sagte unser aller Lieblings-Exbischof Walter Mixa nach seiner Rückkehr in die Öffentlichkeit in einem Interview (Hervorhebung von mir)?

Der Druck, unter dem ich die vorgefertigte Resignation unterschrieben habe, war wie ein Fegefeuer. Drei Tage später habe ich sie in einem Schreiben an den Papst widerrufen. Ich wusste in den Tagen weder ein noch aus.“

Na, schauen wir doch mal, was die Wikipedia über diesen alten Marketing­schachzug der katholischen Kirche gegen die Höllenängste der kleinen Sünder zu sagen hat:

Das Fegefeuer (lat.: purgatorium), auch Reinigungsort genannt, ist nach der römisch-katholischen Lehre ein Prozess der Läuterung, in dem die Seele eines Verstorbenen auf den Himmel vorbereitet wird.

Das Fegefeuer ist sozusagen Qual, die man über sich ergehen lassen muss, weil sie aus der eigenen Unwürdigkeit heraus entsteht.

Wurde noch vor wenigen Jahrzehnten ausdrücklich gelehrt, dass „Gott solche Seelen in das Fegefeuer weist“, wo sie „große Pein leiden“, so geht die katholische Theologie heute im Allgemeinen davon aus, dass die Seele nach ihrer Selbsterkenntnis das Fegefeuer bereitwillig auf sich nimmt, um – von den schlechten Eigenschaften geläutert – in das Paradies eingehen zu können.

Also ich sehe außer den Bezug zur angeblichen „großen Pein“ nicht allzu viel Wesentliches, das zu Mixas Aussagen passt. Selbst wenn er immerhin – sorgfältig formuliert, wie mir scheint – irgendwie zugibt, dass ein großer Vorwurf tatsächlich möglicherweise wohl berechtigt war:

„Es war wohl sicher ein Fehler, dass ich in den letzten Monaten im Blick auf die „Prügelstrafen“, die mir vorgeworfen wurden, und die mir beim besten Willen immer noch nicht erinnerlich sind, dass ich da nicht gleich eingeräumt habe, dass ich das nicht für jede körperliche Züchtigung behaupten kann“

Aber ist das wirklich ein Zeichen von Sebsterkenntnis? Die Erkenntnis der Unwürdigkeit, die für die Qual im Fegefeuer gesorgt hätte? Gar eine Läuterung?

Angesichts des Widerrufs der Resignation gleich nach diesem seinem Fegefeuer?

Ich glaube, ich bin nicht der einzige, der das stark bezweifelt. Eher der nächste Schachzug im Bemühen um den Wiedereinzug in Amt und Ehren oder zumindest möglichst große Teile davon – quasi sein Stückchen Paradies auf Erden als Ziel nach der purgatorischen Pein. Isoliert wie er anscheinend ist – interessiert er sich jetzt in dieser Hinsicht überhaupt für irgendetwas anderes als sein eigenes Wohlergehen?


Foto: Dr. Christoph Goldt / Bischöfliche Pressestelle Bistum Augsburg (IBA), aus Wikipedia, CC-by-sa-Lizenz

GSC 2010: Vorentscheid Mazedonien

GSC2010 Mazedonien

Konna veranstaltet den Gedankendeponie Song Contest in Anlehnung an den Eurovision Song Contest, in dem jeder Teilnehmer sich ein Land aussucht und ein Lied von dort ins Rennen schickt – nette Idee, auch wenn mittlerweile der ESC-Hype abgeebt ist… Ich hab mir unter den Ländern, die noch übrig waren, die Republik Mazedonien herausgepickt.

Und auch ich will hier einen Vorentscheid veranstalten, welches Lied denn ins Rennen gehen soll – dabei habe ich mich für einen wie ich finde guten Kompromiss in Bezug auf den Aufwand für mich wie für euch, die ihr abstimmen sollt, entschieden: Ich stelle hier direkt in einem einzigen Vorentscheid nur drei Lieder zur Auswahl. Allesamt von der etwas härteren Sorte, versteht sich. :mrgreen:

Beginnen wir mit (laut Wikipedia) Garage Punk von K.U.R. Kulturno Umetnicki Rabotnici bzw. К.У.Р. Културно Уметнички Работници – „Kultur- und Kunst-Arbeiter“ laut Google-Übersetzer (nicht wörtlich) –, nämlich „Ljubovta za nea nema znacenje“ bzw. „Љубовта за неа нема значење“ = „Liebe hat keine Bedeutung“:

 

Weiter mit Metalcore von Smut mit dem Lied „Ova e za vas“, was auch immer das heißen mag (hier versagt der Google-Übersetzer, wie oben auch schon bei den lateinischen Buchstaben; „ze vas“ scheint „für dich/Sie“ zu heißen):

 

Zu guter letzt gibt’s Melodic Black Metal von Siniac mit „The Sound Trough Ages“. Kurz zum Bandnamen:

SINIAC is an archaic Macedonian word from the western part of the land and is still in use in those dialects. It represents an atmospheric appearance – when the water drops on the cold ground are freezing into crystals in the gloomiest and mistiest dawns of the winter.

Ob man bei dieser Musik an diese Erscheinung denkt, sei dahingestellt.^^

 

So, jetzt entscheidet ihr:

–Umfrage beendet–

Ihr könnt bis Dienstag früh, 22.6. 10:00 Uhr, abstimmen. Ich bitte um zahlreiche Beteiligung. :)

22.6.: Das Ergebnis: K.U.R. setzt sich klar mit 80% gegen Smut mit 20% und Siniac ohne Stimme durch.