Herr Thees

Journalismus, Bloggen, Webdesign und neue Medien

A Year Before in Aptana Studio

WordPress-Plugin: A Year Before

| 20 Kommentare

In english — or something similar

(Dieser Beitrag stammt ursprünglich aus dem Würzblog. Ich habe ihn aber in dieses Blog verlegt, da er hier thematisch besser passt)

Wenn ein Blog länger besteht, dann ist es ja fast schon ein historisches Dokument. Und so kann es interessant sein, was so vor einem Jahr im Blog passiert ist.

Zumindest stellte sich dieses Problem dem Würzblog. Eine grobe Recherche brachte mir kein Plugin für WordPress, dass mir diese Funktionalität bot. (Falls ich es einfach nur übersehen habe, dann gibt es jetzt ein Zweites. ;-)) Also habe ich mal schnell eines selbst geschrieben. :-)

Übersicht

Mit “A Year Before” kann man Blogbeträge anzeigen lassen, die vor einer bestimmten Zeitspanne im Blog veröffentlich wurden. So kann man in einer “historischen Ecke” zeigen lassen, was vor z. B. 30 Tagen, 6 Monaten oder einem Jahr im Blog passierte.

Das Plugin ist nach wie vor im Beta-Stadium, ich garantiere also noch nicht, dass auch alles funktioniert. Aber beim Testen ist noch nichts Schlimmes passiert … ;-)

Installation

Das Plugin aus dem WordPress-Repository herunterladen und das Verzeichnis a-year-before mit den darinliegenden Dateien in den Plugin-Ordner von WordPress schieben. Dann A Year Before bei den Plugins in der WordPress-Administration aktivieren.

Als Widget

Wenn man die Widget-Funktion von WordPress nutzt, dann ist der Rest sehr simpel. Einfach in der Widget-Verwaltung A Year Before auf die Sidebar ziehen. Bei Bedarf kann man im Popup-Dialog alles Mögliche einstellen.

Man kann die Plugin-Ausgabe über ein Muster steuern. Mögliche Platzhalter sind:

* %title% Der Titel des Artikels
* %link% Der Link zum Artikel
* %date% Das Datum des Artikels
* %excerpt% Der Auszugs des Artikels. Man kann die Länge des Auszugs mitangeben, so zeigt %excerpt80% die ersten 80 Zeichen an.

Beispiel eines Musters: %date%: <a href="%link%">%title%<br/>%excerpt40%</a>

Als PHP-Code

Im Template — die Sidebar bietet sich dafür an — an die Stelle, an der die Beitragsliste erscheinen soll, folgenden PHP-Code einfügen:

<?php if (function_exists("ayb_posts")) { ?>
<div class="box">
<h2>Vor einem Jahr</h2>
<ul>
<?php ayb_posts(); ?>
</ul>
</div>
<?php } ?>

Entscheidend ist die Zeile <?php ayb_posts(); ?>, hier werden die zurückliegenden Beiträge ausgegeben. Alles andere ist nur Beiwerk, das auch kurz erwähnt werden soll. Die erste und letzte PHP-Zeile sorgen nur dafür, dass keine Fehler auftritt, wenn das Plugin nicht installiert oder aktiviert ist. Das DIV ist ein Containerelement, mit dem man den ganzen Block mittels CSS gestalten könnte. Das H2 ist die Überschrift über der Liste, das UL erzeugt eine Liste — dazu später mehr.

Werden beim Aufruf von ayb_posts keine Parameter in den Klammern angegeben, dann gibt das Plugin die Beiträge inklusive Datum als Listenelemente aus, die vor einem Jahr gebloggt wurden.

Konfiguration

Die Optionen für das Plugin wird in folgender Form übergeben:
parameter1=wert1&parameter2=wert2&parameter3=wert3 ...

Folgende Parameter stehen zur Verfügung:

  • day gibt die Anzahl der Tage an, vor denen die Beiträge angezeigt werden sollen.
  • month gibt die Anzahl der Monate an, vor denen die Beiträge angezeigt werden sollen.
  • year gibt die Anzahl der Jahre an, vor denen die Beiträge angezeigt werden sollen.
  • before gibt HTML-Code an, der vor jedem alten Beitrag steht. Standardmäßig das Listenelement <li>
  • after gibt HTML-Code an, der nach jedem alten Beitrag steht. Standardmäßig das Listenelementende </li>
  • showdate schaltet die Anzeige des Datums vor jedem Beitrag ein (Wert=1, Standardwert) oder aus (Wert=0)
  • dateformat ist für die Formatierung des angezeigten Datums vor den Beiträgen. Die Formatangaben sind analog zum PHP-Befehl date. Als Standard dient die deutsche Datumskurzform “d.m.y”, was z. B. zur Ausgabe 27.12.06 führt.
  • notfound ist der Text der ausgegeben wird, wenn keine Beträge an dem Tag gefunden wurden.
  • range gibt eine Anzahl von Tagen an, die in Richtung Zukunft nach Artikeln gesucht wird, wenn am gwünschten Tag kein Beitrag geschrieben wurde.
  • anniversary steuert den “Jahrestag-Modus”. Wenn auf 1 gesetzt gibt das Plugin alle Artikel aus, die an diesem Tag in dem Monat über die Jahre geschrieben wurden. Die Parameters “day”, “month”, “year” und “range” werden ignoriert.
  • posts_max legt die Anzahl der Artikel fest, die angezeigt werden. 0 steht für “alle”.

Beispiele:
ayb_posts("day=30&before=&after=&showdate=0");
Zeigt die Blogbeiträge von vor 30 Tagen an, ohne das Datum anzuzeigen. Die Beiträge werden nicht als Listenelemente ausgegeben, sondern einfach mit einem Zeilenumbruch hinter jedem Beitrag.

ayb_posts("month=6&day=14&notfound=An dem Tag wurde nix gebloggt");
Die Beiträge vor einem halben Jahr und zwei Wochen werden gelistet, inklusive Datum. Wurde an dem Datum kein Artikel geschrieben, dann wird der Text “An dem Tag wurde nix gebloggt” ausgegeben.

ayb_posts(“range=14&dateformat=y-m-d”);
Schaut ob es vor einem Jahr Artikel geschrieben wurden. Wenn nicht, schaut das Plugin, ob in den nächsten  14 Tagen etwas geschrieben wurde und gibt die Beiträge vom nächstemöglichen Tag aus.

ayb_posts(“anniversary=1″);
Zeigt Beiträge an, die am selben Tag und im selben Monat wie das aktuelle Datum geschrieben wurden, unabhängig vom Jahr. Also alle Artikel, die heute vor einem Jahr, vor zwei Jahren, vor drei Jahren und so weiter geschrieben wurden.

Für Freunde des CSS gibt es auch die Möglichkeit, das Datum über die Klasse ayb_date, den Link über ayb_link und die notfound-Nachricht über ayb_notfound gestalten.

Änderungen / Changelog

0.9.4

  • Fix (nochmals): Manchmal werden andere Post-Typen (zum Beispiel Menüpunkt) als Artikel und Seiten angezeigt

0.9.3

  • Fix: Fehler mit PHP 5.3, wenn es im Template mit PHP aufgerufen wird.

0.9.2

  • Fix: Manchmal werden andere Post-Typen als Artikel und Seiten angezeigt

0.9.1

  • Kleinen Bugfix, bei manchen Systemen kam es zu Dastellungsproblemen in der Plugin-Übersicht im Backend

 0.9

  • Maximale Anzahl der angezeigten Artikel festlegen
  • kleinere Bugfixes

0.8

  • Zeige Seiten an oder auch nicht
  • Entweder öffentliche oder private Artikel werden angezeigt — oder auch beide.
  • Die Ausgabe kann über Muster angepasst werden: %link%, %title%, %date%, %excerpt% (Danke an Marcus von themenfreund.de für die excerpt-Idee)
  • WordPress-Widget-Klasse wird verwendet (Plugin funktioniert nur ab WordPress 2.8+)
  • OOP-Programmierung

0.7.1

  • fix: Wegen einem Problem in der gettext-Funktion bei PHP/Apache geben manche Server Fehlermeldungen aus. Um diesen Fehler zu vermeiden, muss ich leider die Übersetzungmöglichkeit des Widgets abschalten. Die Funktionalität bleibt voll erhalten, nur die Sprache des Widgets ist nur immer Englisch.

0.7

  • anniversary-Modus für die Suche an Artikeln am selben Tag in den letzten Jahren
  • range-Parameter für Bereichssuche
  • Beachtung von Zeitzonen
  • Bugfixes

0.6.1

  • Bugfix für Sidebars, die nicht “sidebar” heißen.

0.6

  • Plugin kann als WordPress-Widget genutzt werden
  • Lokalisierung

0.5.3

  • XHTML-Bugfix (überflüssiges span
  • Bugfix PHP 5 bei leeren Funktionsparameter

0.5.2

  • Bugfix für tolerantere Zeitangaben (z.B. day > 364). Danke an AlohaDan für den Hinweis und Test.

0.5.1

  • Anpassung an MySQL-Versionen älter als MySQL 4.1.1

0.5

  • Erste öffentliche Betaversion

Download

a-year-before.zip (Version 0.9.3)

Kategorien: Allgemein, Programmierung | Schlagwörter: , , , | Permalink

  • Andrew Kurtis

    Hello Ralf,

    Week ago I have asked for your permission to translate your A Year Before plugin in Spanish and I didn’t hear any from you since. I hope that you will find time to provide the reply, because we believe that the translation would be of a great use. You can reply me directly on andrewk@webhostinghub.com

    All the best,

    Andrew Kurtis

    WebHostingHub

    • http://herrthees.de/ Ralf Thees

      Sorry, i stuck in work.
      Certainly you may translate the plugin, the pot-file is included in the zip-file of the plugin at wordpress.org. Send me the po/mo-files and i will include them in the next version.

      • Andrew Kurtis

        Hi Ralf,

        Thanks for your reply.
        Please can you email me at andrewk@webhostinghub.com and leave me your mail address so that I can send it back when I finish the translation?

        Thank!
        Andrew Kurtis

  • Andrew Kurtis

    Hi Ralf,

    My name is Andrew, I am with WebHostingHub . We would like to translate your A Year Before plugin that we found at http://herrthees.de/2012/09/15/wordpress-plugin-a-year-before/ to Spanish language, no charge of course, to
    help people from Hispanic community better manage their websites.
    Would that be ok with you? You can reply me directly on my email.

    I hope I’ll hear from you soon.

    Kind regards

    Andrew Kurtis
    WebHostingHub

  • Peter

    Great plugin, but I’m encountering the occasional error. For example, if you look at http://www.cnyradio.com today, you’ll see the plugin is used in one of my sidebar widgets. There are several blank entries. There are also entries for menu items which must have been created on this date… but (a) the links don’t work and (b) these are menu items, not articles — so they shouldn’t be appearing anyway. Any chance for a bug fix on this?

  • Woflgang Sekora

    Hallo! Super Plugin
    Habe den Jahrestag Modus aktiviert. Kann ich im Widget irgendwie einstellen, dass range Funktion möglich ist. Ich möchte Beiträge die vor 1,2,3 Jahren usw angezeigt werden und eine Woche im voraus schon gelistet sind. Danke

  • Kerstin

    Hi, ich hab auch das Problem, dass keine Beiträge mehr gefunden werden, obwohl es die definitiv geben müsste. Kannst du mal ein Update mit nem Fix rausbringen, bittebittebitte?

    • http://herrthees.de Ralf Thees

      Ich kümmere mich darum. In welchem Blog setzt du das Plugin ein?

    • Kerstin

      So, ich konnte den Fehler nun bei mir beheben, indem ich das Widget aus der Sidebar entfernt und dann wieder hinzugefügt habe… self-repairing ;-)

      • http://herrthees.de/ Ralf Thees

        Hab ich das nicht toll programmiert! ;) Falls es doch wieder zickt, gib mir Bescheid!

  • basti

    schade -seit dem letzten update geht es nicht mehr…

  • Ruth

    Das Plugin verursachte eine Fehlermeldung 1 Zeichen unerwartete Ausgabe während der
    Aktivierung. Sollte du Fehlermeldungen wie “headers already sent”, Probleme mit
    der Syndizierung der Feeds oder andere Fehler erhalten, versuche das Plugin zu
    deaktivieren oder zu löschen.

    und hier der php-fehler

    Warning: Cannot modify header information – headers already sent by (output started at /home/content/…/…/html/wp-content/plugins/a-year-before/ayb_posts.php:733) in /home/content/…/…/html/wp-includes/pluggable.php on line 881

    Es läuft also leider nicht mit der aktuellen WP-Version.

    • http://herrthees.de/ Ralf Thees

      Kannst du mir sagen, wie und mit welchen Einstellungen du das Plugin verwendest? Denn bei vielen Blogs funktioniert es, du bist die erste, von der ich von einem solchen Fehler erfahre.

    • http://herrthees.de/ Ralf Thees

      Magst du dir mal die Entwickler-Version 0.9.1 herunterladen und installieren und schauen, ob der Fehler dann noch auftritt?
      http://downloads.wordpress.org/plugin/a-year-before.zip

  • http://www.facebook.com/thorloewenherz Thor Löwenherz

    Leider wird seit dem neuesten Update der vor einem Jahr geschriebene Artikel angezeigt, allerdings nicht mehr verlinkt. Ich nnutze das Widget und möchte nur sehr ungern auf dieses klasse Plugin verzichten. Vielleicht kannst Du ja helfen?

    • http://herrthees.de/ Ralf Thees

      Wie sieht denn dein Ausgabemuster im Widget aus?

      • http://www.facebook.com/thorloewenherz Thor Löwenherz

        Hallo Ralf, dachte, ich habe es mit §%title%” in den Griff bekommen. Leider wird der Link jetzt falsch ausgegeben: http://thorbloggt.de/“http://thorbloggt.de/2011/10/sommer-im-herbst”. Also irgendwie doppelt gemoppelt.

        • http://www.facebook.com/thorloewenherz Thor Löwenherz

          Danke, habe es gefunden. Einfach die ” weglassen. Jetzt funktioniert es wieder einwandfrei und ich muss nicht auf das klasse Plugin verzichten.

  • Pingback: Wordpress-Plugin: A Year Before » Würzblog » blog, plugin, software, würzblog, wordpress()