Wordpress Onkel Andys Tagebuch|Filme |Spiele|Fotos
 

Pingbacks, Trackbacks und Kommentare

18. Mai 2008, 359 Mal gelesen.
 
Dieser Beitrag ist der 9. von 12 in der Serie Blogging
 

An diesem tristen Sonntag landete ich schließlich im Laufe des Nachmittags wieder mal bei der Kommentar-Funktion in Wordpress. Ja, ich wollte das Thema liegen lassen, weil meine Beiträge offensichtlich nicht kommentier- oder diskussionswürdig sind. Aber ich konnte es doch wieder nicht lassen. Ausschlaggebend war mein momentaner AJAX-Wahn – ich liebe es, wenn sich Inhalte aktualisieren, ohne dass die ganze Seite neu geladen werden muss. Gerade wenn man die Seiten mittels WP-Super-Cache zwischenspeichert ist es nötig, auf Ajax-Widgets zuzugreifen, um ständig aktuelle Infos in der Seitenleiste anzuzeigen. Klar ist das Cache-Plugin schlau genug, damit das Kommentieren auch so ganz reibungslos funktioniert, aber richtig komfortabel ist die normale Kommentarfunktion nicht. Ich hatte bisher ja das Paged Threaded Comments-Plugin im Einsatz und adaptierte hierfür mein Comments-Template mit sehr viel Aufwand. Hat auch alles ganz gut geklappt, doch zum einen wird das Plugin schon seit Ewigkeiten nicht mehr weiter entwickelt, zum anderen stolperte ich heute über eine sehr überzeugende Alternative: Ajax Comments Reply. Im Gegensatz zu den vielen anderen Kommentarplugins bietet das Teil alle Features, die man sich wünschen kann: Ajax, Aufsplittung in Seiten, wenn zu viele Kommentare geschrieben wurden und va. Kommentarthreads. Man kann also auf andere Kommentare antworten und die visuelle Darstellung sorgt für entsprechende Übersicht. Ich hab mir das Plugin mal installiert und war von Beginn an begeistert, wie alles sofort funktioniert und sogar die Threads von meinem alten Plugin beibehalten wurden. Es ist also keinerlei Problem, von einem alten Nested Comments-Plugins umzusteigen, wodurch der Wechsel auch bei Blogs mit vielen Kommentaren problemlos ist. Zudem scheint insbesondere die Aufsplittung in Seiten sehr elegant gelöst zu sein! Ich implementierte dann noch meine eigenen Codeschnipsel in das comments.php File. Wichtig ist hier zu wissen, dass die Datei im Pluginverzeichnis geändert werden muss und nicht im Themes-Folder. Ich habe also noch das Subscribe-to-Comments-Plugin integriert und noch schnell die Gravatar-Einstellungen angepasst. Offensichtlich existiert bereits ein Subscription-Feature, das speziell dafür kreierte Plugin bietet aber definitiv mehr Features und sollte auf keinem Blog fehlen.

Im Zuge der Code-Überarbeitung stieß ich auch wieder auf das alte Problem: Pingbacks werden recht unübersichtlich als ganz normale Kommentare gehandhabt, was insbesondere dann sinnlos wird, wenn man sich selber innerhalb des Blogs pingt. Hier stellt sich womöglich mal die Frage: Was sind überhaupt Pingbacks und wozu dienen Trackbacks?

  • Ein Ping ist im Prinzip nichts anderes als eine automatische Information der Blogsoftware an eine andere Webseite, dass diese soeben verlinkt wurde. Möchte man verhindern, dass andere Webseiten diese Information bekommen, kann man die Funktion Blog-übergreifend oder auch nur Beitrag-spezifisch abschalten. Natürlich funktioniert das Ganze auch nicht, wenn die Gegenseite dieses Feature nicht unterstützt. Effektiv ist das Ganze wohl ziemlich Blog-spezifisch, das Anpingen funktioniert also generell bei allen Seiten, die was mit Blogs zu tun haben. Soweit so gut.
  • Weiters gibt es die Möglichkeit der Trackbacks. Offensichtlich handhaben verschiedene Bloggingpakete diese zwei Protokolle unterschiedlich. So gäbe es zwar ein dem Pingback ähnlich kommendes Auto-Trackback, was aber auf Grund des Protokolls ein eher komplexes Unterfangen ist. In Wordpress müssen Trackbacks ohnehin manuell gesetzt werden, wobei hier schlichtweg darauf hingeweisen wird, dass nur ältere Blogs mittels Trackbacks verlinkt werden müssen, während neuere Systeme über den Pingback kommunizeren. Dies Aussage beschränkt also den Unterschied zwischen Track- und Pingback explizit auf die technologischen Aspekte.

Tatsächlich können aber auch einigen Online-Quellen zufolge semantische Feinheiten ausgemacht werden. Da Trackbacks keinen direkten Link im Beitrag benötigen, können sie gezielter eingesetzt werden. Man könnte daraus schließen, dass Trackbacks dezidierter der Blog-übergreifenden Diskussion dienen als Pingbacks. Schließlich ist ein Pingback einfach nur eine automatische Nachricht über die Verlinkung. Fakt ist, dass Pingbacks die Kommentarliste eines Blogs ziemlich unnötig verunstalten können. So werden diese Pings auf den verlinkten Blogs als normale Kommentare mit schwer zuordenbaren Auszügen des ursprünglichen Blogs dargestellt. Dabei wäre eine simple Linkliste aller Blogs, die auf den Artikel verweisen nicht nur übersichtlicher, sondern auch deutlich sinnvoller. Trackbacks hingegen müssten als Kommentar ausgewiesen werden, da diese eben diversen Quellen im Web zufolge eher auf die gezielte Diskussion/Kommunikation hinzielen. Zudem wird in einem Trackback das Exzerpt des anderen Blogs eingefügt und nicht wie beim Pingback der völlig aus dem Zusammenhang gerissene Teil um den Link herum.

Um nun diese beiden unterschiedlichen Protokolle auch visuell voneinander auseinander zu halten und insbesondere von richtigen Kommentaren abzusetzen, muss die comments.php-Datei entsprechend angepasst werden. Für die Auflistung von Trackbacks existieren eigene Plugins, die aber eigentlich nicht notwendig sind, da der Code wirklich sehr simpel und kurz ist. Hier also die Änderungen, die vorzunehmen sind – sie basieren großteils auf den Ausführungen von Meister Bueltge:

Dieser php-Code wird vor den Kommentaren eingefügt
  1. < ? php
  2. $commentdata = array();
  3. foreach ($comments as $comment) {
  4.         if (get_comment_type() == 'comment') $commentdata['comments'][] = $comment;
  5.         elseif (get_comment_type() == 'pingback') $commentdata['pingbacks'][] = $comment;
  6.         else $commentdata['trackbacks'][] = $comment;
  7. }
  8.  
  9. $count_comments   = count($commentdata['comments']);
  10. $count_pingbacks = count($commentdata['pingbacks']);
  11. $count_trackbacks = count($commentdata['trackbacks']);
  12.  
  13. echo "<div class='pingbacklist'>";
  14.  
  15. if ($count_pingbacks >= 1){
  16.  echo "<h3>";
  17. if ($count_pingbacks == 1) echo "Eine Seite verlinkt auf diesen Beitrag:</h3>";
  18. else echo $count_pingbacks." Seiten verlinken auf diesen Beitrag:";
  19.  echo "<ul class='pingbacklist'>";
  20.  foreach ($comments as $comment) {
  21.   if(get_comment_type() == "pingback") {
  22.    echo "\n<li class='pingbacklist' id='ping-".get_comment_ID()."'>";
  23.    echo comment_author_link();
  24.    echo "<span class='pingmetadata'> am ".get_comment_date('d.m.y');
  25.                         echo ", um ".get_comment_time('H:i')." Uhr";
  26.    echo edit_comment_link(' bearbeiten','','');
  27.    echo "</span></li>";
  28.    }
  29.   }
  30.  echo "</ul>";
  31. }
  32.  
  33. if ($count_trackbacks >= 1){
  34.  echo "<h3>";
  35.  if ($count_trackbacks ==1 )
  36.           echo "Es existiert folgender Trackback f&uuml;r diesen Beitrag:</h3>";
  37.  else echo $count_trackbacks . " Trackbacks existieren f&uuml;r diesen Beitrag:";
  38.  echo "<ul class='pingbacklist'>";
  39.  foreach ($comments as $comment) {
  40.   if(get_comment_type() == "trackback") {
  41.    echo "\n<li class='pingbacklist' id='track-".get_comment_ID()."'>";
  42.    echo "<a href='#comment-".get_comment_ID()."'>".get_comment_author()."</a>";
  43.    echo "<span class='pingmetadata'> am ".get_comment_date('d.m.y');
  44.                         echo ", um ".get_comment_time('H:i')." Uhr";
  45.    echo edit_comment_link(' bearbeiten','','');
  46.    echo "</span></li>";
  47.    }
  48.   }
  49.  echo "</ul>";
  50. }
  51.  echo "";
  52. ?>
  53.  
  54. < ? php if ($count_comments == 0) $print_comments = 'Gib deinen Senf dazu!';
  55.  elseif ($count_comments == 1) $print_comments = 'Ein Kommentar';
  56.  else $print_comments = $count_comments . ' Kommentare ';
  57. echo "<h3>".$print_comments."";
  58. if ($count_comments || $count_trackbacks) :BLABLA
  59. ?>

Im Comment-Loop müsste man noch vor die Ausgabe des einzelnen Kommentars folgende Zeile schreiben:

  1. if (get_comment_type() != 'pingback')

Somit hat man eine feine Übersicht über die verschiedensten Kommentartypen. Ein Live-Beispiel ist bei meinem Cure Konzert-Beitrag zu sehen.

Vor Jahr und Tag..

Series Navigation«Wieder mal Wordpress-PluginsPerformance-Optimierung für den Blog»
 

Trackbacks/Pingbacks

  1. My Testblog
 

Kommentiere