Montag, 26. Juni 2006 Druck-Ansicht
Vor einigen Tagen hatte ich zu diesem Zweck das PlugIn Get Recent Comments ausprobiert - und war insgesamt unzufrieden: Zwar werden flexible Einstellungsmöglichkeiten geboten - aber wenn die Anzeige der letzten fünf Kommentare gleich satte 39 zusätzliche Abfragen erzeugt und das ganze System auch dementsprechend verlangsamt wird, sollte man sich nach einer anderen Möglichkeit umtun.
Im Zuge der Versuche, dem PlugIn WP-RSSImport 3.0 auch die korrekte Anzeige etwas ungewöhnlicherer Sonderzeichen “beizubringen”, kam mir die Idee, dass man statt der Nutzung eines leistungshungrigen PlugIns doch genausogut die eigenen Kommentar-Feeds auf der eigenen Seite einbinden könnte.
So hätte man eine wirklich schnelle Möglichkeit, die neuesten soundsoviel Postings bzw. Kommentare an passender Stelle auflisten zu können.
Gestern abend hab ich dazu einen Artikel bei bueltge.de gefunden … Demnach taugt diese Methode auch bei vielbesuchten Seiten - und demnach bin ich nicht der Erste mit dieser Idee …
Wie dem auch sei: RSS-Import läuft ziemlich fix - und ist für diesen Job beinahe ideal. Aber zwei Stolpersteine waren einfach nicht beiseite zu räumen:
Also hab ich nach einem anderen PlugIn gesucht - und ein geeignetes gefunden, nämlich “Recent Comments” von Nick Momrik.
Die ersten Tests waren überzeugend: Das PlugIn arbeitet schnell und verursacht nicht übermäßig viele Abfragen. Sieben zusätzliche bei Anzeige der 10 neuesten Kommentare empfinde ich im Vergleich zu der Belastung durch das vorher genannte PlugIn als unproblematisch. Ein paar Dinge sollten jedoch vor Einsatz angepasst werden - Denn es gibt mal wieder Umlaut-Probleme.
Nach Installation des PlugIns kann man die Anzeige der letzten x Kommentare an beliebiger Stelle im Template mit einer Anweisung nach folgendem Muster auslösen:
<?php mdv_recent_comments(5, 10, '<li>', '</li>', false, 2) ?>
Dabei steht die Zahl “5″ für die Anzahl der Kommentare, die “10″ für die Anzahl der Wörter, auf die der Kommentar gekürzt werden soll, “<li>” und “</li>” für das, was vor bzw. nach einem Kommentar ausgegeben werden soll. An der nächsten Stelle kann dann entschieden werden, ob auch Kommentare zu passwortgeschützten Beiträgen angezeigt (“true”) oder nicht angezeigt (“false”) werden dürfen - und die letzte Zahl “2″ schließlich … Ja, die gibt’s in der ursprünglichen Version eigentlich gar nicht:
Im “Lieferumfang” von “Recent Comments” befinden sich zwei unterschiedliche Anzeige-Varianten zwischen denen man durch Eingabe von “0″ oder “1″ beim Aufruf der Funktion wählen kann. Und um bei etwaigen Fehlversuchen nicht immer zwei Dateien miteinander vergleichen zu müssen, hab ich einfach kurzerhand eine dritte Anzeige-Variante “eröffnet”.
Das ist ganz einfach - und zudem eine prima Möglichkeit, mit ein und demselben PlugIn an verschiedenen Stellen ganz nach Wunsch angepasste Darstellungen zu erreichen. In der Original-Datei ist deutlich zu erkennen, wie man dabei vorgehen muss - die Zeilen 29 bis 42 sind hierbei die wichtigen:
if ($comment_style == 1) {
$post_title = stripslashes($comment->post_title);
$url = $comment->comment_author_url;
if (empty($url))
$output .= $before . $comment_author . ' on ' . $post_title . '.' . $after;
else
$output .= $before . "<a href='$url' rel='external'>$comment_author</a>" . ' on ' . $post_title . '.' . $after;
}
else {
$output .= $before . '<strong>' . $comment_author . ':</strong> <a href="' . $permalink;
$output .= '" title="View the entire comment by ' . $comment_author.'">' . $comment_excerpt.'</a>' . $after;
}
Wenn man also die erste if-Bedingung komplett kopiert und eine “2″ reinschreibt, kann man zwischen diesen Klammern seinen eigenen “comment_style” unbesorgt bearbeiten, ohne grundsätzliche Funktionen zu beeinflussen (… und außerdem kann man sich auf seiner Testseite gleichzeitig die “Original”-Ausgabe zum Vergleich anzeigen lassen … ) Der PHP-Code sollte jetzt jedenfalls in etwa so aussehen (gekürzt):
if ($comment_style == 1) {
/* Variante beim Wert "1" */
}
if ($comment_style == 2) {
/* Platz für die eigene Ausgabe-Variante*/
}
else {
/* Variante beim Wert "0" */
}
All die genannten Variablen kann man mit derselben PHP-Funktion korrekt umwandeln. Dabei einfach nach folgendem Muster vorgehen:
$VariablenName
austauschen durch:
htmlentities( $VariablenName, ENT_QUOTES , 'utf-8' )
… das war’s schon. Und bis jetzt hab ich keine nicht-gewandelten Sonderzeichen im Quelltext gefunden. Freundlicherweise muss man in diesem Fall bei der Umwandlung in Entities trotz der Kürzungs-Funktion nichts weiter beachten. Denn da das PlugIn nicht nach Buchstaben, sondern nach ganzen Wörtern kürzt, sind “zwischendrin abgebrochene” Sonderzeichen ausgeschlossen.
Der Vollständigkeit halber hier als unverbindlicher Vorschlag der Code von “meinem” aktuell laufenden “comment_style”:
if ($comment_style == 2) {
$output .= "\t" . $before . "<a href=\"" . $permalink . "\" title=\"Kommentar von " . htmlentities( $comment_author , ENT_QUOTES , 'utf-8' ) . " zu "" . htmlentities( $comment->post_title , ENT_QUOTES , 'utf-8' ) . " (...)" lesen\">";
$output .= "<span>" . $comment_author . ":</span> " . preg_replace("/\r|\n/s", "", htmlentities( $comment_excerpt , ENT_QUOTES , 'utf-8' )) . " [...]</a>" . $after . "\n";
}
Anmerkungen:
Von Nick Momrick gibt’s weitere interessante PlugIns. Eins davon heißt “Recent Posts” und zeigt die neuesten Beiträge an. Beziehungsweise zeigt es den Anreißertext (“Auszug”) der neuesten Beiträge an. Anders als Wordpress aber nur, wenn tatsächlich einer hinterlegt worden ist … Doch dazu später mehr.
Bookmarks, Feed und Links
Wenn Ihnen dieser Beitrag geholfen hat ...
Beiträge zu ähnlichen Themen:
5 Antworten zu Keine Leistungsbremse: “Recent Comments” für Wordpress
Kommentar schreiben