Artikelupdates in der Sidebar

Besucher auf aktualisierte Artikel hinweisen


Der Artikel besteht aus 1666 Wörtern. Geschätzte Lesezeit: 06:39 Minuten

wordpress-Bildschirm

Folgendes Szenario kennt wohl jeder, der einen Blog betreibt:

Man schreibt über irgendeinen laufenden Vorgang einen Artikel. Irgendwann in den dann folgenden Tagen, Wochen oder sogar nur Monaten tut sich etwas in dem beschriebenen Vorgang, was den Besucher interessieren könnte oder was man ihm unbedingt mitteilen möchte.

Da stellt sich dann die Frage, was tut man nun, um zu erreichen das der Leser auch über den neuen Sachstand in Kenntnis gesetzt wird?

Da gibt es zumindest 3 verschiedene Möglichkeiten!

Einen neuen Artikel schreiben

Vielleicht die einfachste aber nicht unbedingt auch die beste Variante ist es, das man mit Verweis auf den ersten Artikel, in welchem man die (damalige / bisherige) Sachlage schon ausführlich geschildert hat, einen neuen Artikel schreibt.

Warum es - aus meiner Sicht - nicht unbedingt die beste Variante ist?

Das hat mehrere Gründe:

Beim schreiben eines neuen Artikels zu einer / einem schon anderweitig beschriebenen Sachlage / Vorgang steckt man irgendwie in einer Zwickmühle. Zum einen will man den Leser, der den Ausgangsartikel schon gelesen hat, ja in den seltensten Fällen nicht nochmal mit der komplett zu beschreibenden Sachlage konfrontieren. Er weiß dann vermutlich ja schon, um was es sich gehandelt hat.

Zum anderen hat ein Blog ja auch immer mal wieder neue Leser. Und das ist meiner Ansicht nach die Zwickmühle:

Denn man will ja in der Regel, das auch diese Neulinge immer auf dem jeweils aktuellen Stand sind. Das aber kann man nur über zwei Wege erreichen

a.) in dem man entweder die ganze Sachlage / den ganzen Vorgang nochmal in aller Ausführlichkeit schildert, oder

b.) den ersten Artikel nur verlinkt

Punkt a.) würde die Alten Hasen auf dem Blog wohl tierisch nerven und eventuell sogar vergraulen. Kennen sie - aller Voraussicht nach - ja schließlich den Sachstand und wissen somit um was es geht. Die zweite Variante würde die neuen Leser vielleicht ganz schnell wieder vergraulen, weil viele von uns ja durchaus so etwas wie 'Klickfaul' sind. Wer springt schon gerne zwischen zwei oder sogar mehreren Artikeln hin und her, wenn man zu jedem neuen Sachstand einen Artikel verfasst und sich ein Vorgang ellenlang hinzieht?

Desweiteren wäre ein solcher Artikel vielleicht auch zu kurz, um von den SuMa entsprechend gewürdigt zu werden. Nicht zu vergessen:  'SEO',  das Lieblingswort der Blogger.

Einen neuen Artikel zu schreiben lohnt sich in meinen Augen erst, wenn die neue Sachlage, bzw. die Begleitumstände die dazu führten, dermaßen umfangreich sind, das eine Aktualisierung des Ausgangsartikels den Rahmen sprengen würde.

Hinweis im Artikel und der Artikelübersicht

Eine zweite Möglichkeit wäre ein Bordmittel, das WordPress von Haus aus mitbringt: der Modified-Tag

Mit ihm ist es möglich, in der Artikelübersicht und natürlich auch im Artikel selbst einen Hinweis anzubringen, der den werten Besucher darauf aufmerksam macht, das ein bestimmter Artikel eine Überarbeitung erfahren hat.

Das ist eine Variante, die ich schon für besser als den unter 1. beschriebenen Weg halte. Aber auch noch nicht so wirklich für das Gelbe vom Ei erachte.

Auch das hat seine Gründe!

Beim Hinweis in der Artikelübersicht:

Weist man - so wie ich es auch mache - in der Artikelübersicht beim betreffenden Artikel auf den Umstand hin, das es eine Aktualisierung gegeben hat, wird dieser - je nachdem wie viele Artikel man auf der ersten Seite anzeigen lässt und wie viele Artikel man in der Regel schreibt - schnell ein Opfer der einem Blog innewohnenden Eigenschaft, das ältere Artikel immer weiter nach hinten rutschen, bis sie zuletzt in den Weiten des Blogs verschwinden und seltenst jemals wieder ans Licht geholt werden.

Hinweis im Artikel selbst:

Wählt man (nur) die Variante, im Artikel selbst auf den Umstand der Aktualisierung hinzuweisen, verpassen viele Leser die entsprechenden Neuheiten. Denn warum soll man einen Artikel mehrfach lesen, vor allem wenn er vielleicht schon 1 oder zwei Monate alt ist?

Das ist für viele Zeitverschwendung und daher tun sie es sich nicht an!

Und weil beide Varianten in meinen Augen nicht unbedingt in jedem Fall der wahre Jakob sind, habe ich mich hingesetzt und einen Code gebastelt, der in der Sidebar darauf aufmerksam macht, das Artikel ein Update erfahren hat.

Ich weiß jetzt nicht, ob es hierzu schon anderweitig einen Code gibt, oder gar ein Plugin existiert, da ich nicht danach gesucht habe.

Hinweis auf Aktualisierung in der Sidebar

Mit dem folgenden Code kann man in der Sidebar seines Blogs darauf hinweisen, das und wenn ein Artikel ein Update erfahren hat.

Dazu muss man - logischerweise - in zwei Dateien seines Themes etwas hinzufügen: Zum einen in der functions.php, zum anderen in der sidebar.php.

Ich zeige Euch jetzt erst einmal den Code der jeweiligen Datei, und versuche dann zu erklären, was die einzelnen Zeilen bewirken:

Code der functions.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function updated_article() {
	global $wpdb;
	$upd_query = "SELECT post_date, post_status, post_type, post_modified, DATE_FORMAT(post_modified, '%d.%m.%Y, um %H:%i:%s') AS post_modified_ger, post_title AS posttitle, post_name AS postname, guid AS postid FROM $wpdb->posts
		WHERE post_status = 'publish'
		AND post_type= 'post'
		AND post_modified >= post_date + INTERVAL 5 DAY
		AND post_modified >= CURDATE() - INTERVAL 2 MONTH		
		ORDER BY post_modified DESC
		LIMIT 3";	
	$upd_result = $wpdb->get_results($upd_query);
	if ( empty($upd_result) ) {
	echo '<small>... keine aktualisierten Artikel</small>';
	}
	foreach ($upd_result as $updat) :
		$post_modified_ger = $updat->post_modified_ger;
		$posttitle = $updat->posttitle;
		$postname = $updat->postname; 
		$postid = $updat->postid;
	echo '<ol>';
	echo '<li style="list-style-type:none"><div class="akt-titel"><a href="https://themenfreund.de/'.$updat->postname.'" title="'.$updat->posttitle.'">'.$updat->posttitle.'</a></div><h6 class="aktualisiert1">Aktualisiert am: '.$updat->post_modified_ger.'</h6></li>';
	echo '</ol>';
	endforeach;
}

Zeile 1 erklärt sich glaube ich von allein, ebenso wie Zeile 2.

In letzterer wird die globale WordPress-Datenbank als diejenige festgelegt, die im folgenden angesprochen wird und aus der die entsprechenden Daten geholt werden sollen.

In Zeile 3 startet die Abfrage und wird festgelegt, welche Spalten(n) der Datenbank die entsprechenden Daten enthalten, die benötigt werden und welche Tabelle der Datenbank diese enthält. In diesem Fall ist es die Tabelle posts Zeile 4, 5 und 6 legen fest, welche Bedingungen die einzelnen Inhalte der Spalten erfüllen müssen, um ausgewählt und später angezeigt zu werden.

Die Bedingungen sind:

Zeile 4: Der Post muss veröffentlicht sein, also der post_status muss auf 'publish' stehen.

Zeile 5: Die Art des veröffentlichten muss ein Post  / Artikel sein. Es wäre auch möglich 'page' - also Seiten zu wählen. Das macht aber wohl in den seltensten Fällen wirklich Sinn. Läßt man diese Abfrage komplett raus, werden sowohl aktualisierte Posts wie auch entsprechende Artikel angezeigt.

Zeile 6 legt fest, das das Modifizierungs-Datum 5 Tage größer sein muss als das Veröffentlichungsdatum. Man kann natürlich auch Wochen oder Monate festlegen.

Zeile 7 ist nicht unbedingt notwendig. Macht aber im Zusammenhang mit den zeilen 11 und 12 durchaus Sinn. Denn es kann ja durchaus sein, das man im Dezember nicht mehr die Aktualisierung eines Artikel anzeigen lassen möchte, die bereits im Februar des gleichen Jahres erfolgt ist. In diesem Fallle heißt die Zeile übersetzt, das nur Artikel angezeigt werden dürfen, deren Modifizierungsdatum maximal 3 Monate - vom heutigen Datum aus gesehen - zurückliegt.

Zeile 8 sortiert die Ausgabe nach absteigendem Datum. Also der zuletzt Aktualisierte Artikel wird zuerst angezeigt.

Zeile 9 Limit legt die Anzahl der zu zeigenden Artikel fest. Bei dieser Konstellation sollen jeweils nur die 3 zuletzt einem Update unterzogenen Artikel angezeigt werden.

Zeile 10 übergibt die aufgrund der Abfrage in den zeilen 3 - 7  angefallenen Daten an die Variable upd_result.

Zeile 11 bis 13 legen fest, was passiert, wenn die Abfrage ergibt, das keine aktualisierten Artikel vorhanden sind, weil die letzte Aktualisierung eines Artikels den in Zeile 7 festgelegten Zeitraum überschreitet. In diesem Fall soll die Ausgabe 'keine aktualisierten Artikel' ausgegeben werden.

Mit Zeile 14 beginnt eine Schleife, die bis zur Zeile 20 reicht. In Zeile 14 selbst wird festgelegt, das das in Zeile 10 in der Variablen upd_result gespeicherte Ergebnis jetzt an die Variable updat übergeben wird, bzw. diese Variable mit der ersten gleichzusetzen ist.

Die Zeilen 15 bis 18 legen weitere Variable fest und legen die Werte fest, die ihnen zugewiesen werden.

Zeile 19 schließlich legt fest, wie die Ausgabe später in der sidebar.php aussehen soll. Der Befehl rechts des Gleichheitszeichens des Befehls 'li style' sorgt dafür, das weder ein Punkt noch ein sonstiges Zeichen dem jeweiligen Listen-Element vorangesetzt wird.

Zeile 20 schließt respektive beendet die Schleife

Der Code der sidebar.php:

In die Sidebar.php muss zur Ausgabe der folgende Code eingebaut werden:

1
2
3
<?php if (function_exists('updated_article')); ?>
<h3>Zuletzt aktualisierte Artikel:</h3>
<?php echo updated_article(); ?>

Zeile 1 prüft, ob die Funktion zur Ausgabe überhaupt vorhanden ist.

Zeile 2 erklärt sich von allein, wie ich denke. Hier wird lediglich die Überschrift festgelegt.

Zeile 4 sorgt für die Ausgabe des Ergebnisses des Code aus der functions.php.

So, das sollte es gewesen sein. Ich hoffe, das das Ganze für den einen oder anderen von Nutzen sein wird. Da ich nicht der geborene Programmierer bin, kann es natürlich sein, das hier und da am Code noch was eingespart werden könnte oder ich bei dem Versuch, den Code zu erklären Murks geschrieben habe. In beiden Fällen würde es mich freuen, wenn die etwas Profihafteren Leser unter Euch mir entsprechende Hinweise und Vorschläge machen können. Die Funktion des Ganzen könnt ihr bei mir rechts oben in der Sidebar bewundern, direkt unter 'Weitere neue Beiträge'.

Update 10. März 2012:

Leider beinhaltet der Code für die functions.php einen Fehler, auf den ich aber erst die letzten Tage aufmerksam wurde! Dieser Fehler äußert sich wie folgt: Befindet man sich auf der Index-Seite des Blogs, werden die Links der aktualisierten Artikel korrekt gesetzt! Befindet man sich jedoch auf einer Artikelseite, wird der Link eines aktualisierten Artikels an den Link des Artikels angehängt, auf dessen Seite man sich gerade befindet! Sprich, ist man gerade auf domain/abc und möchte den aktualisierten Artikel xyz aufrufen, heißt dessen Link plötzlich domain/abc/xyz Korrigiert wird dies in dem man die Zeile 19 wie folgt ändert:

<a href="'.$updat->postname.'"</a>

in

<a href="http://domain/'.$updat->postname.'"</a>
Marcus
Über Marcus 702 Artikel
Ich freue mich über Deinen Besuch auf meinem Blog! Wenn Dir der Artikel gefallen hat, teile ihn doch mit anderen und hinterlasse Deine Meinung. Mehr über mich gibt es hier zu lesen

5 Kommentare

  1. Hallo Markus,
    die Sidebar ist bei mir FF 3.6.16 total nach unten gerutscht. In IE ist sie ordentlich.
    Dein Problem mit der Aktualisierung war auch schon häufig mein Problem, dennoch weiß ich nicht, ob ich deine ansprechende Lösung übernehme: ich bin nicht sicher, ob dieser Info-Overkill noch wahrgenommen wird und ich bin nicht ein so fleißiger Blogger. Aber vielleicht hast du bald einen belastbaren Rücklauf.

    Treffend finde ich u.a. den Hinweis „.. schnell ein Opfer der einem Blog innewohnenden Eigenschaft, das ältere Artikel immer weiter nach hinten rutschen, bis sie zuletzt in den Weiten des Blogs verschwinden und seltenst jemals wieder ans Licht geholt werden.“ Aus diesem Grund habe ich das Plugin Site Slideshow entwickelt und veröffentlicht, damit man immer mal wieder an ältere Beiträge erinnert wird. Allerdings funktioniert es nur, wenn jedem Beitrag ein Bild zugeordnet ist, das muss aber nicht im Artikel sichtbar sein.
    Gruß
    Dietrich

    • Hallo Dietrich!

      Danke für Dein Feedback!

      Gut, mit dem Informations-Overkill hast Du sicher nicht ganz unrecht! Aber ich persönlich fände es schade, wenn ein Artikel aktualisiert wird und keiner wirklich davon Notiz nehmen kann. Wobei diese Variante wohl auch nur wirklich Sinn macht, wenn der Ausgangsartikel round about maximal 6 – 9 Monate alt ist. Wenn ein Artikel älter ist – vielleicht sogar schon zwei Jahre oder mehr, dann sollte man doch lieber einen komplett neuen Artikel verfassen, als den ursprünglichen auf den Aktuellen Stand zu bringen!

      Was die falsche Darstellung anbetrifft, liegt das dann doch an deiner doch sehr veralteten Version des Fuchses. Die Version 7.x, die ich nutze, zeigt alles an wie erwartet.

  2. Das mit der zeile 7 funktioniert bei mir überhaupt nicht.
    Auch wenn ich 120 Monate eingebe, wird nichts angezeigt ausser „keine aktualisierten Artikel“
    und das obwhol der letzte Artikel am zum beispiel im folgenden Zeitrahmen aktualsiert wurde:
    aktualisiert am 18. April 2012 | erstellt am 30. März 2012

    Nehme ich die zeile 7 raus werden drei Artikel angezeigt.

    Woran könnte das liegen?

    • Hallo Stefan!

      Hast Du die Zeile so übernommen? Die einzige Idee, die ich jetzt habe, wäre nämlich, das Du MONTHS statt MONTH eingesetzt hast!

      Und da php respektive die Server da ja sehr genau sind, könnte das S zuviel sein!

  3. Hallo, nein ich habe das einfach nur von dir kopiert. Komisch, muss ich noch mal weiter untersuchen.

    Ansonsten funktioniert das ohne diese Einschrämkung bei mir sehr gut.

    Ich habe zu deinem Update vom 10. März aber noch was anzumerken. So Wie du das schreibst funktioniert das glaube ich nur, wenn mann keine anderen path elemente in WP eingestellt hat.

    Ich habe den code bei mir einwenig angepasst und mir über die original ID des Posts den permalink des beitrags geholt. Dazu verwende ich die methode get_permalink($postid) von WordPress. Das funktioniert auch bestens. Dazu musste ich die SQL Abfrage um das Feld ID aus der Tabell posts erweitern.

Kommentar hinterlassen

E-Mail Adresse wird nicht veröffentlicht.


*


CommentLuv - verlinke einen deiner Blog-Artikel