Topsy mit BBCode-Support
Soderle, nachdem der erste Versuch, den Blog mit Twitter zu verbinden gründlich schief gegangen ist, habe ich nun einen neuen Versuch gestartet, der auch mir einen kleinen Vorteil verschafft.
Und zwar habe ich nun das Plugin Topsy Widgets installiert, von dem ich im Meinungs-Blog erfahren habe. Mir geht es dabei jedoch ausschließlich um die Funktion, Tweets, die einen Artikel im Blog verlinken, als Trackbacks anzuzeigen. Genau diese gewünschte Funktion hat jedoch prompt ein Problem hervorgerufen, das ich nun erst einmal lösen musste!
Wie ihr ja sicherlich wisst, setze ich das von mir geschriebene Plugin BBComment ein, um mich vor Cross-Site Scripting zu schützen. Das Topsy-Plugin generiert jedoch von Hause aus HTML-Code, um die Trackbacks zu formatieren. Dem müssen wir natürlich Abhilfe schaffen, damit wir auch tatsächlich ordentliche Tweets zu sehen kriegen!
Insgesamt sind 3 kleine Eingriffe nötig, die ich im folgenden beschreiben werde. Die Zeilennummern und gezeigten Quelltextpassagen beziehen sich auf die Version 1.0.3 des Plugins.
Zuerst einmal begeben wir uns in die Funktion topsy_handle_single_trackback(). Diese kümmert sich – soweit ich es verstanden habe – um das Anlegen der Trackbacks in der Wordpress-Datenbank. In Zeile 203 wird der Textinhalt des Trackbacks gesetzt:
1 | 'comment_content' => $wpdb->escape("<span class=\"topsy_trackback_comment\"><span class=\"topsy_twitter_username\"><span class=\"topsy_trackback_content\">$tweet_text</span></span>"), |
Diese Zeile kann durch eine wesentlich kürzere Variante ersetzt werden:
1 | 'comment_content' => $tweet_text, |
Der Grund, weshalb wir hier nichts escapen müssen ist, dass genau dafür das BBComment-Plugin zuständig ist. Die <span>-Elemente sind sicherlich eigentlich für das Formatieren der Ausgabe gedacht. Da es für sie allerdings kein BBCode-Äquivalent gibt, können wir sie einfach ignorieren.
Als nächstes Besuchen wir nun die Funktion topsy_linkify_atuser(): genauer gesagt die Zeile 269. Angenommen, in einem Tweet wird eine Person erwähnt – z.B. @weizenspreu. Dann wird dieser Name genommen und entsprechend auf das Profil der Person verlinkt. Die Zeile…
1 |
…müssen wir umändern in…
1 |
Abschließend muss nur noch die Funktion topsy_linkify_hashtag() abgeändert werden. Was wir mit der Verlinkung der Personnamen getan haben, müssen wir noch einmal mit den Hashtags wiederholen. Deswegen ändern wir die Zeile 272. Aus einem…
1 |
…zaubern wir ein…
1 |
Nachdem alle Änderungen vorgenommen wurden, ist es ratsam, noch einmal alle aus Tweets generierten Trackbacks durch Topsy löschen zu lassen, damit die Änderungen für alle Tweets wirksam werden. Und in Null-Komma-Nix habt ihr wunderschöne Twitter-Trackbacks mit korrektem BBCode.
Und nicht vergessen: Ich hafte nicht für Schäden an Software, Hardware oder für Vermögensschäden, die durch Anwendung dieser Änderungen entstanden sind oder entstehen könnten. ![]()
Twitternde Grüße, Kenny
P.S.: Wie ihr sehen könnt, habe ich nun zum Einbetten des Quelltextes ein Plugin installiert. Schon nach der ersten Anwendung möchte ich den CodeColorer nicht mehr missen!


