Trackback
In Weblogs ist dieses Feature seit einiger Zeit ein Muss, und immer mehr Weblog-Systeme unterstützen es.
Was es ist, wie es funktioniert und wie man es einbauen kann, wird man in den folgenden Abschnitten erfahren.
- Was ist Trackback?
- Wie funktioniert Trackback?
- Wie kann man Trackback realisieren?
- Weiterführende Links
Was ist Trackback?
Am einfachsten lässt sich das Prinzip mit einem Beispiel erklären. Man liest in einem anderen Blog einen interessanten Eintrag. Die Thematik möchte man seinen eigenen Lesern nicht vorenthalten. Zudem möchte man sich auf den gelesenen Beitrag beziehen und seine eigene Meinung niederschreiben.
Bei unblogbar habe ich mir angesehen, wie man in sein eigenes Blog diese Technik implementieren kann. Als ich dies versuchte, traten bei meiner Software verschiedene Probleme auf, dessen Lösung ich euch nicht vorenthalten möchte. [...]
Wie funktioniert Trackback?
In den meisten Fällen wird das Blog, auf das man sich bezieht, verlinkt. Nutzt man die Trackback-Funktion, sendet das eigene Blog einen sogenannten (Trackback-)Ping in der Form eines HTTP POST Requests an eine bestimmte URL des Ziel-Blogs. In dem anderen Blog werden diese Daten, sofern alles problemlos verläuft, gespeichert (z.B. in einer Datenbank) und anschlieüend in der Einzelansicht des jeweiligen Eintrags mit Verlinkung zum bezugnehmenden Blog angezeigt.
User können sich also durch verschiedene Blogs und Kommentare in diesen ein besseres Bild von der Thematik verschaffen.
Wie kann man Trackback realisieren?
Trackbacks versenden
Trackback wurde von Movable Type entwickelt, es wurde standardisiert, welche Daten gesendet werden und wie es abläuft. Der HTTP POST Request, den man an die Trackback-URL des Eintrags sendet, muss folgendes enthalten:
- Titel (title), der Titel des eigenen Eintrags
- Auszug / Einleitung des eigenen Eintrags (excerpt), nach den Spezifikationen von Movable Type maximal 255 Zeichen
- Adresse zum eigenen Eintrag / Permalink (url)
- Name des eigenen Blogs (blog_name)
$fp = @fsockopen($host, 80);
@fputs($fp, "POST ".$trackback_url." HTTP/1.1\r\n");
@fputs($fp, "Host: ".$host."\r\n");
@fputs($fp, "Content-Type: application/x-www-form-urlencoded; charset=utf-8\r\n");
@fputs($fp, "Content-length: ".strlen($data)."\r\n");
@fputs($fp, "Connection: close\r\n\r\n");
@fputs($fp, $data);
@fclose($fp);
- Die @-Zeichen vor den Funktionen bewirken die Unterdrückung möglicher Fehlermeldungen bei Misserfolg.
- $trackback_url ist die Trackback-URL des jeweiligen Eintrags des anderen Blogs.
- $host ist die Direkt-URL zur Seite in der Form "www.unblogbar.com" oder im Falle einer Subdomain "subdomain.domain.de" (Funktionstipp: parse_url()).
- $data beinhaltet das zu sendende, dies kann z.B. so aussehen:
title=Mein+Eintrag
&url=http%3A%2F%2Funblogbar.com%2Fweblog%2C123.html
&excerpt=Ein+kleiner+Auszug%2C+...&blog_name=unblogbar.com
Jedes Element muss einzeln mit urlencode() kodiert werden:
title=".urlencode($title)."&url=" ...)
- strlen($data) ermittelt die Länge des zu sendenden Strings.
- Bei dem Content-Type sollte, laut Spezifikation, auch das Charset angegeben werden - im Beispiel UTF-8.
Trackbacks empfangen
Die Trackback-Seite ($trackback_url) empfängt den gesendeten HTTP POST Request, die gesendeten Daten können dann über $_POST['blog_name'], $_POST['url'], $_POST['excerpt'] und $_POST['title'] verarbeitet werden, meistens werden sie in eine Datenbank eingetragen um sie beispielsweise unter dem Blog-Eintrag aufführen zu können.
War das Empfangen erfolreich, wird folgendes als XML-Dokument ausgegeben:
<?xml version="1.0" encoding="utf-8"?>
<response>
<error>0</error>
</response>
Im Fehlerfall folgendes:
<?xml version="1.0" encoding="utf-8"?>
<response>
<error>1</error>
<message>The error message</message>
</response>
Ein XML-Dokument kennzeichnet man in PHP durch die folgende HEADER-Angabe:
header("Content-type: text/xml");
Autodiscovery (automatisches erkennen der URL)
Möchte man einen Trackback versenden, benötigt man die Trackback-URL eines Weblog-Eintrags. Damit das pingende Blog (das eigene) diese URL findet, sollte man ein RDF mit Informationen zum Eintrag auf der Einzelansichts-Seite einbinden.
Dabei sollte man beachten, dass der Code selbst in XHTML nicht gültig ist. Damit das Dokument dennoch als gültig anerkannt wird, kann man den Code in einen Kommentar schreiben.
<!--
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
<rdf:Description
rdf:about="http://www.foo.com/archive.html#foo"
dc:identifier="http://www.foo.com/archive.html#foo"
dc:title="Foo Bar"
trackback:ping="http://www.foo.com/tb.cgi/5" />
</rdf:RDF>
-->
Alle URLs müssen dynamisch angepasst werden, ebenso wie der Titel.
Eine detailierte Beschreibung zur Realisierung in ASP findet man bei zerbit.de.
Weiterführende Links
- TrackBack Technical Specification (Technische Spezifikationen von Trackback bei Movable Type)
- Kommentare und Fragen zu "Was ist Trackback?"
- Diskussion zur Realisierung mit PHP
- Realisierung mit ASP