Hier aufklappen um sämtliche Kategorien zu durchstöbern.

Disqus

In regelmäßigen Abständen würde ich gerne die Kommentarfunktion meines Blogs überarbeiten. Ich finde sie einfach unzureichend für die heutige Zeit und sie macht auch nicht wirklich große Lust, seine Meinung zu sagen. Aber gerade für mich hat Feedback einen hohen Stellenwert, erweitert es doch häufig den eigenen Horizont durch zusätzliche Informationen oder Gesichtspunkte. Nun bietet BlogEngine.NET von Haus aus die Möglichkeit an, Disqus zu verwenden. Nachdem mich nun @michaelhorkavy diesen Gedanken wieder aufgefrischt hat, werfe ich nochmals einen Blick darauf und versuche das Thema für mich zu Hinterfragen. Das Resultat ist nicht nur eine Grundsatzdiskussion, sondern auch ein How-To (und das nicht nur für Blogger auf Basis BlogEngine.NET).

Diskussionsgrundlage

Meine Beweggründe, die Kommentarfunktion immer wieder aufs Neue gedanklich zu diskutieren sind einfacher Natur. Aber sehen wir uns zuvor doch einmal an, wie die Kommentarfunktion zum Zeitpunkt des Schreibens dieses Posts aussieht (zur Dokumentation, sollte eine tatsächliche Umstellung geschehen):

Kommentarfunktion devtyr.norberteder.com

Klar, hier könnte man per Styling schon etwas nachhelfen, dass eine größere Lust zum Kommentieren aufkommt. Der Vorteil dieser Variante liegt ganz klar darin, dass ich als Besucher keinen Account besitzen muss, um meine Meinung zu sagen. Der Nachteil für mich als Betreiber ist hingegeben, dass so sehr viel Spam zu bereinigen ist (natürlich stehen hierfür zahlreiche Helferlein zur Verfügung, die sind aber manchmal weniger gründlich und manchmal mehr als einem lieb ist). Abgesehen davon, habe ich in vielen Fällen einfach keine Ahnung woher der Kommentar kommt. Ist das wichtig? Ich sage: ja! Manchmal tun sich durch einen Kommentar Fragen auf, die zu diskutieren es lohnt. Kann ich aber nicht, wenn ich den Schreiber nicht kontaktieren kann (siehe beispielsweise Mail-Adressen via http://10minutemail.com/).

Eine weitere nette Funktionalität nennt sich Benachrichtige mich bei neuen Kommentaren. Wunderbar. Ich bekomme eine Email, wenn sich Neues bei den Kommentaren getan hat. Bin ich gar mitten in einer Diskussion, möchte ich aber unmittelbar antworten. Kann das aber nicht, da diese Funktionalität schlicht nicht unterstützt wird. Ich werde zu einem Medienbruch genötigt, da ich meine Mails verlassen und das Blog besuchen muss, um weiter zu diskutieren. Eine recht große Hürde - wie ich meine. Zumindest fällt mir das immer wieder sehr schwer, wodurch ich diesen “Task” auf später verschiebe. Nur dazu kommt es dann kaum.

Hier braucht es eine bessere Lösung. Ein Ansatz über den ich schon lange nachdenke kommt von Disqus.

Disqus - Das bessere Kommentarsystem?

Vor längerer Zeit ging mal das Kommentarsystem von Facebook herum. Will ich schlicht nicht einsetzen, da zu einschränkend. Außerdem möchte ich Facebook nicht noch mehr Daten vermitteln, als dies ohnehin schon der Fall ist. Eine weitere Variante besteht durch Disqus (weil, wie bereits angesprochen, auch durch BlogEngine.NET unterstützt). Aber wie kann Disqus hier helfen?

Vorteile

Sehen wir uns vorerst einmal an, welche Vorteile ein Einsatz von Disqus bringen kann.

Wichtig: Ich gehe hier nur auf die kostenfreien Funktionen ein. Kostenpflichtig sehen weit mehr Möglichkeiten zur Verfügung, kommen für mich jedoch nicht in Frage. Wer einen Überblick haben möchte, sei auf die Featureübersicht verwiesen.

  • Benachrichtigungen und Antwortmöglichkeiten. Benachrichtigungen werden per Email zugestellt. Antworten sind ebenfalls per Email möglich, auch das Löschen, Freischalten und Markieren von Spam. Kein Medienbruch mehr notwendig - eine klare Minimierung einer großen Hürde.
  • Einbinden von multimedialen Inhalten. Derartige Inhalte sind meist deaktiviert, werden sie doch meist missbraucht. Wenn sauber implementiert können derartige Inhalte eine Diskussion durchaus bereichern.
  • Kompatibilität zu mobilen Geräten. In meinem Fall sollte dies nachrangig sein, scheint aber hin und wieder doch Probleme zu bereiten.
  • Integration von sozialen Netzwerken. Die meisten Besucher sollten einen Account auf Disqus selbst, Google, Twitter, Facebook, Yahoo oder eine OpenID haben. Dem Verfassen von Kommentaren sollten keine Steine in den Weg gelegt sein.
  • Sharing.  Besucher können mitteilen, ob ihnen ein Beitrag oder ein Kommentar gefällt und diesen teilen. Auf Facebook, Twitter und anderen Netzwerken.
  • Tweets und Reaktionen. Unterhaltungen oder Reaktionen auf Twitter werden gesammelt und ebenfalls angezeigt. Schön gesammelt beim ursprünglichen Beitrag.

Und dann gibt es natürlich noch weitere Funktionen wie Statistiken, Blacklists, Whitelists, verbotenen Worten, Spamfilter bis hin zu Importen und Exporten.

Wo ist nun der Haken?

Bis jetzt klingt das doch positiv. Oder nicht? Irgendwo muss aber jetzt ein Haken sein. Klar. Die Kommentare liegen nicht auf meinem System, sondern auf einem Fremdsystem. Was bedeutet dies konkret?

  • Ein Backup meines Systems umfasst keine Kommentare. Diese werden hoffentlich vom Fremdsystem, als Disqus, gesichert. Wovon auszugehen ist.
  • Ein Umstieg auf ein anderes Blogsystem kann mitunter nicht so einfach werden. Disqus kann zwar grundsätzlich sehr einfach eingebunden werden, unterstützt werden jedoch nur die wirklich weit verbreiteten Systeme á la Wordpress, Blogger und Co. D.h. hier ist manuelle Arbeit notwendig.
  • Disqus verwendet für Importe und Exporte das WordPress eXtended Rss (WXR) Format. BlogEngine.NET setzt beispielsweise auf BlogML. Da hätten wir dann schon mal unterschiedliche Formate.
  • Was tun sollte Disqus dicht machen? Ist ein Rückführen der Kommentare dann möglich? Ja, ist es. Allerdings wieder mit manuellem Aufwand verbunden.

Umstellung auf Disqus

Schrecken die erwähnten Nachteile nicht ab, kann eine Umstellung recht einfach erfolgen. Nachfolgend die notwendigen Schritte um das Blog (hier wird die Umstellung eines BlogEngine.NET Systems beschrieben, Hinweise auf andere Systeme aber ebenfalls gegeben).

Registrierung Blog / Benutzer

Notwendig ist hierzu eine Registrierung des Blogs und eines Benutzers (Verwaltungs-Account). Wichtig hierbei ist der anzugebende Shortname, der in allen Fällen des Zugriffs benötigt wird. Alle anderen Einstellungen können jederzeit geändert werden.

Blog bei Disqus registrieren

Wie im Screenshot zu sehen, habe ich bereits einen Benutzer. Ist keiner vorhanden, kann dieser im selben Schritt erstellt werden. Soweit ist diese Seite fertig. Damit wäre diese Sache erledigt.

Export der Kommentare

Ein bestehendes System (wie es meines ist) hat für gewöhnlich bestehende Kommentare. Diese würden bei einer Freischaltung von Disqus am Blogsystem zwar nicht verloren gehen, kämen allerdings nicht mehr zur Anzeige. Schade um die vielen Informationen, die unsere Besucher bisher bereichert haben. Also müssen bestehende Kommentare importiert werden. Weiter oben habe ich bereits angesprochen, dass die BlogEngine.NET das BlogML-Format unterstützt und damit nicht von Haus aus in Disqus importiert werden kann (Wordpress, Blogger und Co. sind hier natürlich schön im Vorteil).

Um nun die eigenen Kommentare zu konvertieren, wird ein Tool namens BlogMLtoDisqus.exe verwendet. Dieses setzt das .NET Framework 4.0 voraus. Zuvor müssen die Daten jedoch im benötigten Format exportiert werden. Dieser Schritt ist über die Administration auszuführen, erreichbar unter Einstellungen -> Importiere & Exportiere -> Exportiere.

BlogEngine.NET - Daten exportieren

Das Resultat kann nun einfach über die Konsolenanwendung konvertiert werden:

BlogML nach WXR konvertieren

Wichtig: Das Konvertierungstool schreibt leider für jedes Post inkl. Kommentare keinen Wert für dsq:thread_identifier (dsq ist als XML-Namesapce auf http://www.disqus.com einzubinden). Dies sollte (zumindest im Falle BlogEngine.NET) die eindeutige Post-Id sein. Dieser Wert wird von Disqus herangezogen, um den disqus_identifier zu bilden. Dies ist eine eindeutige Id mit der der Post-Thread angesprochen werden kann und wird benötigt, um die Kommentare und den Kommentarzähler auf das Posting zu mappen. Ist dieser Wert nicht gesetzt, vergibt Disqus einen eigenen Wert, der im eigenen Blogsystem natürlich nicht zur Verfügung steht. Der Entwickler des Konvertierungstools wurde von mir darauf hingewiesen. Sollte es ein Update geben, werde ich dies kund tun. Oder aber einen Blick auf ILSpy werfen :).

Import der Kommentare

Wurde die Konvertierung erfolgreich durchgeführt, muss die resultierende Datei auf Disqus importiert werden, auch hier in der Administration, jedoch unter Tools, zu finden.

Disqus - WXR importieren

Der Import wird nicht sofort durchgeführt, sondern landet in einer Queue. Sobald diese abgearbeitet wurde, erhält man eine Benachrichtigung. Man kann also nur hoffen, dass zwischenzeitlich keine neuen Kommentare am alten System hinzukommen, oder beinhart sein, und umschalten.

Disqus unter BlogEngine.NET aktivieren

Wer denn nun auf Disqus umsteigen möchte, der muss nun wieder in die Administration von BlogEngine.NET wechseln. Unter Einstellungen -> Kommentare findet sich ein entsprechender Disqus-Block:

Disqus unter BlogEngine.NET aktivieren

Sobald die neuen Einstellungen gespeichert wurden, ändert sich bereits das Erscheinungsbild der Kommentare:

Erscheinungsbild Disqus Kommentare

 

Das war es dann fast.

Kommentarzähler anpassen

Wer, wie ich, einen Kommentarzähler anzeigt mag jetzt vielleicht enttäuscht sein, oder sich in seiner Annahme bestätigt fühlen. Hierfür muss eine weitere Änderung durchgeführt werden. Dazu wird folgendes Script benötigt:

<script type="text/javascript">    
    var disqus_title = '<%=Post.Title %>';    
    var disqus_identifier = '<%= Post.Id.ToString() %>';    
    var disqus_url = '<%= Post.AbsoluteLink %>';    
    var disqus_developer = '<%= BlogEngine.Core.BlogSettings.Instance.DisqusDevMode ? 1 : 0 %>';    
 
    (function() {        
        var dsq = document.createElement('script'); 
        dsq.type = 'text/javascript'; 
        dsq.async = true;        
        dsq.src = 'http://<%=BlogEngine.Core.BlogSettings.Instance.DisqusWebsiteName %>.disqus.com/embed.js';        
        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);    
    })();
</script>

Über das Setzen der Post-Id als Identifier wird kein eigener von Disqus gesetzt, wodurch die Kommentare beispielsweise auch wieder rückgeführt werden könnten.

Hinweis: Diese Anpassung ist in der Datei Post.aspx durchzuführen (hierfür ist bereits ein entsprechender JS-Block vorhanden, der noch wie oben beschrieben zu erweitern ist).

Der Kommentarzähler kann dann im Anschluss so bezogen werden:

<a rel="nofollow" href="<%=Post.AbsoluteLink %>#disqus_thread" identifier="<%= Post.Id.ToString() %>"><%=Resources.labels.comments %></a>

Fertig.

Fazit

Natürlich muss sich jeder selbst Gedanken machen, ob ein Abgaben der Kommentare an ein Fremdsystem gewünscht ist. Im Falle des Falles macht Disqus einen recht netten Eindruck, zumal die Funktionen in der Gratis-Variante durchaus ansprechend sind und auch die Referenzen für sich sprechen. Eine Einbindung kann recht flott durchgeführt werden, wenngleich auch im Falle BlogEngine.NET einige manuelle Schritte vorzunehmen sind. Mit der gezeigten Einbindung ist es allerdings auch wieder möglich, Kommentare zurück ins eigene System zu bringen, sollte man von dieser Entscheidung zurücktreten wollen.

blog comments powered by Disqus
Anmelden