Würzblog
Das läuft gerade bei Radio Würzblog: „Endorphine“ von Jazz Ohne Strazz

WordPress-Plugin: A Year Before

| 204 Kommentare

In english — or some­thing similar

Wenn ein Blog län­ger besteht, dann ist es ja fast schon ein his­to­ri­sches Doku­ment. Und so kann es inter­es­sant sein, was so vor einem Jahr im Blog pas­siert ist.

Zumin­dest stellte sich die­ses Pro­blem dem Würz­blog. Eine grobe Recher­che brachte mir kein Plu­gin für Word­Press, dass mir diese Funk­tio­na­li­tät bot. (Falls ich es ein­fach nur über­se­hen habe, dann gibt es jetzt ein Zwei­tes. ;-) ) Also habe ich mal schnell eines selbst geschrie­ben. :-)

Über­sicht

Mit „A Year Before” kann man Blog­be­träge anzei­gen las­sen, die vor einer bestimm­ten Zeit­spanne im Blog ver­öf­fent­lich wur­den. So kann man in einer „his­to­ri­schen Ecke” zei­gen las­sen, was vor z. B. 30 Tagen, 6 Mona­ten oder einem Jahr im Blog passierte.

Das Plu­gin ist nach wie vor im Beta-Stadium, ich garan­tiere also noch nicht, dass auch alles funk­tio­niert. Aber beim Tes­ten ist noch nichts Schlim­mes pas­siert … ;-)

Instal­la­tion

Das Plu­gin aus dem WordPress-Repository her­un­ter­la­den und das Ver­zeich­nis a-year-before mit den dar­in­lie­gen­den Dateien in den Plugin-Ordner von Word­Press schie­ben. Dann A Year Before bei den Plugins in der WordPress-Administration aktivieren.

Als Wid­get

Wenn man die Widget-Funktion von Word­Press nutzt, dann ist der Rest sehr sim­pel. Ein­fach in der Widget-Verwaltung A Year Before auf die Side­bar zie­hen. Bei Bedarf kann man im Popup-Dialog alles Mög­li­che einstellen.

Als PHP-Code

Im Tem­plate — die Side­bar bie­tet sich dafür an — an die Stelle, an der die Bei­trags­liste erschei­nen soll, fol­gen­den PHP-Code ein­fü­gen:

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

Ent­schei­dend ist die Zeile <?php ayb_posts(); ?>, hier wer­den die zurück­lie­gen­den Bei­träge aus­ge­ge­ben. Alles andere ist nur Bei­werk, das auch kurz erwähnt wer­den soll. Die erste und letzte PHP-Zeile sor­gen nur dafür, dass keine Feh­ler auf­tritt, wenn das Plu­gin nicht instal­liert oder akti­viert ist. Das DIV ist ein Con­tai­ner­ele­ment, mit dem man den gan­zen Block mit­tels CSS gestal­ten könnte. Das H2 ist die Über­schrift über der Liste, das UL erzeugt eine Liste — dazu spä­ter mehr.

Wer­den beim Auf­ruf von ayb_posts keine Para­me­ter in den Klam­mern ange­ge­ben, dann gibt das Plu­gin die Bei­träge inklu­sive Datum als Lis­ten­ele­mente aus, die vor einem Jahr geb­loggt wurden.

Kon­fi­gu­ra­tion

Die Optio­nen für das Plu­gin wird in fol­gen­der Form über­ge­ben:
parameter1=wert1&parameter2=wert2&parameter3=wert3 ...

Fol­gende Para­me­ter ste­hen zur Verfügung:

  • day gibt die Anzahl der Tage an, vor denen die Bei­träge ange­zeigt wer­den sollen.
  • month gibt die Anzahl der Monate an, vor denen die Bei­träge ange­zeigt wer­den sollen.
  • year gibt die Anzahl der Jahre an, vor denen die Bei­träge ange­zeigt wer­den sollen.
  • before gibt HTML-Code an, der vor jedem alten Bei­trag steht. Stan­dard­mä­ßig das Lis­ten­ele­ment <li>
  • after gibt HTML-Code an, der nach jedem alten Bei­trag steht. Stan­dard­mä­ßig das Lis­ten­ele­men­tende </li>
  • show­date schal­tet die Anzeige des Datums vor jedem Bei­trag ein (Wert=1, Stan­dard­wert) oder aus (Wert=0)
  • datefor­mat ist für die For­ma­tie­rung des ange­zeig­ten Datums vor den Bei­trä­gen. Die For­matan­ga­ben sind ana­log zum PHP-Befehl date. Als Stan­dard dient die deut­sche Datums­kurz­form „d.m.y”, was z. B. zur Aus­gabe 27.12.06 führt.
  • not­found ist der Text der aus­ge­ge­ben wird, wenn keine Beträge an dem Tag gefun­den wurden.
  • range gibt eine Anzahl von Tagen an, die in Rich­tung Zukunft nach Arti­keln gesucht wird, wenn am gwünsch­ten Tag kein Bei­trag geschrie­ben wurde.
  • anni­versary steu­ert den „Jahrestag-Modus”. Wenn auf 1 gesetzt gibt das Plu­gin alle Arti­kel aus, die an die­sem Tag in dem Monat über die Jahre geschrie­ben wur­den. Die Para­me­ters „day”, „month”, „year” und „range” wer­den ignoriert.

Bei­spiele:
ayb_posts("day=30&before=&after=&showdate=0");
Zeigt die Blog­bei­träge von vor 30 Tagen an, ohne das Datum anzu­zei­gen. Die Bei­träge wer­den nicht als Lis­ten­ele­mente aus­ge­ge­ben, son­dern ein­fach mit einem Zei­len­um­bruch hin­ter jedem Beitrag.

ayb_posts("month=6&day=14&notfound=An dem Tag wurde nix gebloggt");
Die Bei­träge vor einem hal­ben Jahr und zwei Wochen wer­den gelis­tet, inklu­sive Datum. Wurde an dem Datum kein Arti­kel geschrie­ben, dann wird der Text „An dem Tag wurde nix geb­loggt” ausgegeben.

ayb_posts(„range=14&dateformat=y-m-d”);
Schaut ob es vor einem Jahr Arti­kel geschrie­ben wur­den. Wenn nicht, schaut das Plu­gin, ob in den nächs­ten  14 Tagen etwas geschrie­ben wurde und gibt die Bei­träge vom nächs­te­mög­li­chen Tag aus.

ayb_posts(„anniversary=1″);
Zeigt Bei­träge an, die am sel­ben Tag und im sel­ben Monat wie das aktu­elle Datum geschrie­ben wur­den, unab­hän­gig vom Jahr. Also alle Arti­kel, die heute vor einem Jahr, vor zwei Jah­ren, vor drei Jah­ren und so wei­ter geschrie­ben wurden.

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

Ände­run­gen / Changelog

0.8

  • Zeige Sei­ten an oder auch nicht
  • Ent­we­der öffent­li­che oder pri­vate Arti­kel wer­den ange­zeigt — oder auch beide.
  • Die Aus­gabe kann über Mus­ter ange­passt wer­den: %link%, %title%, %date%, %excerpt% (Danke an Mar­cus von themenfreund.de für die excerpt-Idee)
  • WordPress-Widget-Klasse wird ver­wen­det (Plu­gin funk­tio­niert nur ab Word­Press 2.8+)
  • OOP-Programmierung

0.7.1

  • fix: Wegen einem Pro­blem in der gettext-Funktion bei PHP/Apache geben man­che Ser­ver Feh­ler­mel­dun­gen aus. Um die­sen Feh­ler zu ver­mei­den, muss ich lei­der die Über­set­zung­mög­lich­keit des Wid­gets abschal­ten. Die Funk­tio­na­li­tät bleibt voll erhal­ten, nur die Spra­che des Wid­gets ist nur immer Englisch.

0.7

  • anniversary-Modus für die Suche an Arti­keln am sel­ben Tag in den letz­ten Jahren
  • range-Parameter für Bereichssuche
  • Beach­tung von Zeitzonen
  • Bug­fi­xes

0.6.1

  • Bug­fix für Side­bars, die nicht „side­bar” heißen.

0.6

  • Plu­gin kann als WordPress-Widget genutzt werden
  • Loka­li­sie­rung

0.5.3

  • XHTML-Bugfix (über­flüs­si­ges span
  • Bug­fix PHP 5 bei lee­ren Funktionsparameter

0.5.2

  • Bug­fix für tole­ran­tere Zeit­an­ga­ben (z.B. day > 364). Danke an Alo­haDan für den Hin­weis und Test.

0.5.1

  • Anpas­sung an MySQL-Versionen älter als MySQL 4.1.1

0.5

  • Erste öffent­li­che Betaversion

Down­load

a-year-before.zip (Ver­sion 0.7.1)

204 Kommentare

  1. Hi,

    ich stehe gerade vor einem ähnli­chen pro­blem wie manuel/agentsmith. Gibt es schon was neues dies­be­züg­lich? :)

    Danke!!

  2. Pingback: WP-Plugins | BlogFrosch

  3. Tol­les Plu­gin und ich finde es toll, so wies im Blog erscheint, weil es zeigt eben an, ob vor genau einem Jahr ein Arti­kel erschie­nen ist.
    Geht denn die glei­che Anzeige mit „Heut vor 2 Jah­ren” auch? Lei­der kann ich ja das Wid­get nur ein­mal aufrufen…

  4. Klasse, vie­len lie­ben Dank! :)

  5. @manuel: Ich denke mir eine Lösung für das Update aus, kommt ver­mut­lich in den nächs­ten Tagen.

  6. Hi Ralf,

    wenn ich es rich­tig sehe, gibt es keine Mög­lich­keit um zu beein­flus­sen, dass das Datum nach dem Link aus­ge­ge­ben wird. Das wäre für mich aber rela­tiv wich­tig, da ich das mit blan­ken CSS auch nicht aus­rei­chend beein­flus­sen kann.
    Eine rela­tiv ein­fa­che Lösung wäre, wenn du einen zusätz­li­chen Para­me­ter ein­baust, der fest­legt, ob ein Auf­ruf der Funk­tion (ich nutze keine Wid­gets) direkt den Text per echo aus­gibt (was dann Stan­dard wäre, um abwärts­kom­pa­ti­bel zu blei­ben) oder nur per return her­gibt, dann kann man sich mit­tels str_replace oder gar RegEx zusam­men­bauen was man will.
    Eine andere Alter­na­tive wäre: Neben 0 und 1 auch noch die 2 als show­date zulas­sen, was dann für „nach dem Link” stünde und eben­falls abwärts­kom­pa­ti­bel wäre.

    Es würde mich sehr freuen, wenn du das ein­bauen könn­test. Ich könnte es natür­lich selbst machen, aber ich hacke immer nur sehr ungern an frem­den Plugins herum, wenn dann mal ein Update kommt, gibt das meist Probleme.

    Danke, Manuel

  7. Hallo Ralf,

    danke für die Ant­wort. Aniversary-Mode ist aus. Für die Anzahl der Arti­kel hielt ich die Aus­wahl von 1 bis 10 für hilf­reich. ;-)

    Tors­ten

  8. @torsten: Hast du beim „Range” auch gleich­zei­tig den „Anniversary-Mode” an? Der hätte näm­lich Vorrang. 

    Die Anzahl kann man nicht ein­stel­len, das Plu­gin soll ja alle pas­sen­den Arti­kel anzei­gen. Aber das könnte ich in die nächste Ver­sion ein­bauen. Wün­sche? :)
  9. Eine Frage zum „Lookup Range” … egal wel­chen Wert ich dort ein­trage, es wer­den immer nur die bei­den sel­ben Arti­kel von vor einem Jahr ange­zeigt. Läßt sich das irgend­wie steu­ern, mache ich was falsch? Außer­dem: Kann man die Anzahl der ange­zeig­ten Arti­kel irgendwo einstellen?

    Danke,
    Torsten

  10. Fei­nes Plu­gin, die Behörde dankt!

  11. Pingback: WP 2.7 und die Sache mit den Plugins bei eisitu

  12. Funk­tio­niert das Plu­gin unter WP 2.7 ?
    Viel­leicht mit in diese Liste ein­tra­gen? ;)

  13. Ah! Es geht, es geht…die scheiße geht! :D
    http://www.hisky.de/2008/11/30.….e-sidebar/

    Ein­fach geniale Lösung ;)

  14. Pingback: Ppfpmfpmfmpp Pmpmmmppmmpppmfpmfmpp! bei Blogging Rööö

  15. Guggst du hier: http://unicode.e-workers.de/entities.php

    Es geht vor allem um die Klei­ner– und Grö­ßer­zei­chen der Tags, die wer­den mit &gt; und &lt; in der HTML-Ansicht in Word­Press von Hand ein­ge­ge­ben. Ziem­li­ches Gefri­ckel, aber Web­de­si­gner kön­nen sich daran auf­gei­len. ;-)
    Ich habe dann den PHP-Code noch mit einen code-Tag umhüllt, der Ord­nung hal­ber. ;-)
  16. Öhm. Und wie geht das? Bitte um Anlei­tung und Hil­fe­stel­lung :)

  17. @heiko: Der Code ist hand­ge­macht — HTML-Entities. :)

  18. Ralf…noch ne Frage :)

    Wie hast Du es geschafft, dass Word­Press den PHP Code oben nicht ver­schluckt und so schön anzeigt?
    Hab bei mir eben ein extra Plu­gin für rein­ge­la­den — das den Code aber auf Schrif­größe mini run­ter­zieht :(

  19. Anwas? ;)

    Ich hab die Anlei­tung gele­sen. Damals, als ich das Teil ein­ge­baut hab. Wenn durch ein Update alles kaputt gemacht wird… :( ;)

    Na jut. Dann also doch manu­ell umtriggern.

  20. @hisky: Ich weiß, dass Män­ner nie Anlei­tun­gen lesen, aber es hätte sich gelohnt. :-) Die Mel­dung kannst du im WId­get oder über den Para­me­ter notfound=Bla Bla Bla frei angeben.

    Das Sprach­da­tei wird wegen einem gettext-Fehler bei eini­gen Sys­te­men momen­tan nicht verwendet.

  21. Ralf — bei mir wird das hier ange­zeigt:
    No arti­cles on this date.

    Hab es jetzt in der php Datei manu­ell ein­ge­deutscht — aber ist doch nicht nor­mal, dass er die dt. Sprach­da­tei nicht zieht, oder?

    Im Admin kann / muss man eh nichts ein­stel­len, korrekt?

  22. I wrote my way of doing the para­me­ters and func­tion for A Year Before, on the Sup­port Forum of Word­Press.  Thank you for this.  http://wordpress.org/support/t.….ost-909317

  23. Pingback: WP-Plugins | BlogFrosch

  24. Pingback: Vor 100 Tagen… @ Dave’s Blog

  25. Bei mir funk­tio­niert es nach dem neuen Update wieder.

    Ste­fan

  26. ich betreue 4 wp-installationen die das plu­gin ver­wen­den und bei denen
    gibt es nach dem update kei­ner­lei pro­bleme. wp2.6.3de und wp2.5.1de, php5 und
    mysql4.
    läuft super, der anniversary-mode ist toll.

  27. Und danke schon mal an Rööö, der mir dan­kens­wer­ter­weise einen Zugang auf sein Blog geschaf­fen hat, da konnte ich ein wenig tes­ten. Denn bei mir ist der Feh­ler in allen loka­len Instal­la­tio­nen und auf bei­den akti­ven Blogs nicht aufgetreten.

    Noch weiß ich auch nicht wirk­lich, wie ich diese Feh­ler­mel­dung ver­mei­den kann. Denn sie tritt auf, wenn ich mit load_plugin_textdomain die Über­set­zung laden will. Und eigent­lich sollte es auch so funk­tio­nie­ren, aber schein­bar gab es bei Word­Press schon frü­her damit Schwie­rig­kei­ten.

  28. Wer auch die Feh­ler­mel­dung bekommt, der kann die aktu­elle Development-Version her­un­ter­la­den. Damit tritt der Feh­ler nicht mehr auf, aller­dings geht damit die deut­sche Über­set­zung des Wid­gets flö­ten (der Feh­ler wurde davon verursacht).

  29. Jar klar (sorry, hätte ich auch selbst dran den­ken können)

    Word­Press 2.6.3
    PHP-Version: 5.2.0–8+etch11
    define (›WPLANG‹, ›de_DE‹);

  30. Meeeep!

    Ralf, bei mir kommt der selbe Fehler…

  31. @gilly & ste­fan: Könnt ihr mir eure Word­Press– und PHP-Version sagen? Und viel­leicht auch, was in der wp-config.php unter define (›WPLANG‹, ›???‹) ein­ge­tra­gen ist?

    Lei­der kann ich den Feh­ler nicht repro­du­zie­ren und in etli­chen ande­ren Blogs scheint es zu funk­tio­nie­ren.
    Aber ich küm­mer mich drum … :)

  32. Pingback: » Also so was ….

  33. Argh, sorry, hab nicht gese­hen, dass die For­ma­tie­rung aus der E-Mail über­nom­men wurde :(

  34. Hallo,

    bei mir funk­tio­nier 0.7 auch nicht! Das Blog braucht ewig zum laden und dann kom­men an der Stelle, an der A Year before sitzt diese Fehlermeldung:

    Warning: unpack() [function.unpack]: Type V: not enough input, need 4, have 0 in /var/kunden/webs/gilly/gilly.ws/htdocs_blog/wp-includes/gettext.php on line 91

    Warning: unpack() [function.unpack]: Type V: not enough input, need 4, have 0 in /var/kunden/webs/gilly/gilly.ws/htdocs_blog/wp-includes/gettext.php on line 91

    Fatal error: Maxi­mum exe­cu­tion time of 30 seconds excee­ded in /var/kunden/webs/gilly/gilly.ws/htdocs_blog/wp-includes/streams.php on line 92

  35. Hallo,

    nach dem Update auf 0.7 hat es mein Blog lahm­ge­legt. Ich kam zwar ins Backend aber das Blog selbst hat sich nicht mehr auf­ru­fen las­sen. Der Brow­ser hats ver­sucht und nur weiß gezeigt. Nach dem Deak­ti­vie­ren des Plugins ging es wieder.

    Ste­fan

  36. Hi Ralf,
    ich habe gerade Dein Plu­gin updatet und auch gleich auf anni­versary Mode ›umge­stellt‹.
    Ein tol­les Plu­gin — Danke dafür.

    Ein Frage habe ich aber auch noch:
    Bis­her hatte ich das SQL-Statement etwas abge­än­dert um in der Liste der Arti­kel auch die pri­va­ten Arti­kel auf­ge­lis­tet zu bekom­men. Wer dann den Arti­kel selbst sehen will, muss (logisch) ange­mel­det sein, aber die Über­schrift tauchte dann immer in dei­nem Wid­get auf. Nun gibt es das State­ment gar nicht mehr. Tau­chen die pri­va­ten Arti­kel zukünf­tig auf und wenn nicht wie kann ich dass wie­der anschal­ten.
    Gruß Uwe

  37. Pingback: Leonaut.com

  38. Pingback: WordPress Plugin Releases for 11/07 | Wordpress Blog NL

  39. Pingback: WordPress Theme Releases for 11/07 | bloground.ro - Blogging resources, WordPress themes and plugins for your development

  40. hi. Thanks for plugin

    per­fect.

    Regards

  41. Eine neue Development-Version ist im WP-Repository (0.7beta10), mit der ist auch das Pro­blem bei Mehr­fach­auf­ru­fen beho­ben wor­den. Wer sich traut — bitte tes­ten! :-)

  42. @beetfreeq: Ich schaue, dass ich die neue Ver­sion in die­ser Woche noch fer­tig­be­kom­men, in der auch das Pro­blem hof­fent­lich gelöst ist.

  43. Hi!

    Sehr fei­nes Plu­gin, muss ich sagen. Aller­dings habe ich auch ein klei­nes Pro­blem, um genau zu sein wohl das selbe wie Ines. Wenn ich das Plu­gin mehr­fach hin­ter­ein­an­der für 6 Monate, ein Jahr und danach 2 Jahre ein­bauen will, geht’s nach der ers­ten Aus­füh­rung nicht wei­ter und der Rest der Seite lädt nicht wei­ter. Wei­ter oben im Thread stand mal was von Varia­ble schon initia­li­siert oder so — könnte es das sein? Wäre super, wenn das umge­baut wer­den könnte!

    Danke schon­mal!

  44. Danke Ralf, ich hab mir die Beta mal instal­liert, muss aber noch 2 Tage war­ten um zu sehen, ob dann auch was ange­zeigt wird ;-) Aber es muss irgend­ein Feh­ler drin sein, denn „vor 2 Jah­ren” funk­tio­nierte nicht — die Seite lud an der Stelle nicht wei­ter, wäh­rend „vor 1 Jahr” pro­blem­los funktioniert.

  45. @ines: Du kannst mal die neue Beta aus­pro­bie­ren, da müsste die­ser Feh­ler (ich ver­mute ein Zeitzonen-Fehler) beho­ben sein.

  46. Hey, ich bin grad durch Zufall über einen Feh­ler gestol­pert. Es exis­tiert ein Arti­kel vom 24.9.2007, dein Plu­gin zeigt heute aber den nichts-gefunden Text an. Hast du eine Ahnung, woran das lie­gen könnte? Es ist das erste Mal, dass mir solch ein Feh­ler auf­fällt, ich kann aber nicht sagen, wann er viel­leicht das erste Mal auf­trat. Ich nutze WP2.6.0

  47. Pingback: Denis Welsch - HighEnd Life eines Arschlochs » Blog Archiv » A Year Before und Wordpress 2.6.2

  48. Pingback: Aufräumen | Knalljas

  49. Pingback: Plugins List pour Wordpress >> TiBo, etc. - Tout un tas de saloperies.

Hinterlasse eine Antwort

Pflichtfelder sind mit * markiert.

*