Fryboyter

Kommentarfunktion Isso unter Hugo deaktivieren 2.0

2019 hatte ich bereits einen Artikel veröffentlicht, wie man das Kommentarsystem Isso für bestimmte Artikel unter Hugo deaktiviert. Hierbei wurde aber nur der Code entfernt der für das Anlegen neuer Kommentare und das Anzeigen vorhandener Kommentare zuständig ist. Im Hintergrund wurde beispielsweise die JavaScript-Datei “embed.min.js” weiterhin geladen. Auch wenn diese nur ca. 25 kB groß ist (was einen Großteil von https://fryboyter.de ausmacht), bin ich mit der Lösung unzufrieden.

Da ich aktuell privat etwas Zeit habe, und ich diese Funktion demnächst wohl öfter nutzen werde, habe ich mir eine bessere Lösung überlegt.

Als Erstes habe ich mir die Datei single.html vorgenommen. Diese ist für das Anzeigen von einzelnen Artikeln zuständig. Den betreffenden Code habe ich wie folgt geändert.

{{ if and ( isset .Params "nocomments" ) ( eq .Params.nocomments true ) -}}
    <p>Die Kommentarfunktion ist für diesen Artikel deaktiviert</p>
{{ else }}
    <section id="isso-thread" data-title="{{ .Title }}"></section>
	<noscript>
		<p>Die Kommentarfunktion kann nur mit aktiviertem Javascript genutzt werden</p>
	</noscript>
{{ end }}	

Wichtig ist hier im Grunde genommen die erste Zeile. Damit wird geprüft, ob im Front-Matter-Bereich des jeweiligen Artikels die Zeile nocomments: vorhanden ist und ob diese den Wert true hat. Wenn ja, wird der Hinweis angezeigt, dass die Kommentarfunktion für diese Artikel deaktiviert ist. Wenn nicht, wird der Code eingetragen, mit dem man als Nutzer neue Kommentare erzeugen kann und vorhandene Kommentare anzeigt. Also im Grunde genommen, was im Artikel von 2019 beschrieben wurde.

Als Nächstes habe ich die Datei metadata.html angepasst. Diese erzeugt die Zeile direkt unter dem Titel des Artikels, in der bisher unter anderem die Anzahl der Kommentare angezeigt wird. Was bei einer deaktivierten Kommentarfunktion nicht wirklich nötig ist.

{{ if or (not ( isset .Params "nocomments" )) ( ne .Params.nocomments true ) -}} | <a href="{{ .Permalink }}#isso-thread">Comments</a>{{ end }}

Hiermit wird geprüft, ob die Zeile nocomments: nicht hinterlegt ist oder wenn doch, ob dessen Wert nicht true entspricht. Wenn eines der beiden zutrifft, wird der Code für die Anzahl der vorhandenen Kommentare angezeigt. Den Code habe ich bewusst etwas verkompliziert, da ich verhindern wollte, dass beispielsweise nocomments: treu unabsichtlich dazu führt, dass die Kommentare deaktiviert werden. Wer hierfür eine bessere Lösung hat, die weniger Code benötigt, kann sich gerne melden. Oder einfach einen Pull Request erstellen. Denn an der Stelle zeigt es sich, dass ich nicht wirklich programmieren kann.

Abschließend ist die Datei head.html an der Reihe.

{{ if or (not ( isset .Params "nocomments" )) ( ne .Params.nocomments true ) -}}
	<script data-isso="https://isso.fryboyter.de/" data-isso-feed="true" data-isso-css="false"
		data-isso-lang="{{.Site.Language.Lang }}" data-isso-max-comments-top="inf" data-isso-max-comments-nested="inf"
		data-isso-vote="false" data-isso-reply-notifications="true"
		src="https://isso.fryboyter.de/js/embed.min.js"></script>
	{{ end }}

Hier kommt unterm Strich die gleiche Abfrage wie für metadata.html zum Einsatz. Nur das in diesem Fall nicht die Anzeige der vorhandenen Kommentare ausgeblendet wird, sondern die Datei embed.min.js geladen wird oder eben nicht.

Das ganze Changeset kann man sich unter https://github.com/Fryboyter/Hugo/commit/5dfb4459aa7f9c8b08a21a9568d775808e290b49 ansehen.

Warum nun diese Änderung? Im Grunde aus zwei Gründen.

Zum einen schalte ich bereits jetzt weniger als 80 Prozent der Kommentare frei, da viele Kommentare nur SEO-Spam oder Kommentare sind, die nicht weiterhelfen. Daher auch die manuelle Freischaltung der Kommentare.

Das größere Problem ist aber, dass ich oft keine Lust oder Zeit habe Kommentare zeitnah freizuschalten, so dass diese oft Tage oder gar Wochen nicht angezeigt werden. Das nützt daher weder den Nutzern noch mir etwas. Daher verzichte ich im Zweifelsfall zukünftig lieber auf Kommentare Dritter.

OSBN | Allgemein

Kommentarfunktion Isso unter Hugo deaktivieren

hinweis
Zwischenzeitlich wurde ein Artikel mit einer besseren Lösung veröffentlicht.

Ein Bekannter von mir nutzt für seine Internetseite ein selbst (schlecht) programmierte Lösung. Er hat sich nun selbst für eine Kombination aus Hugo und Isso entschieden. Allerdings stört es ihn, dass man die Kommentarfunktion nicht deaktivieren kann.

Daher hat er mich nach einer Alternative für Isso gefragt. Da ich aber keine Erfahrungen mit anderen Kommentarfunktionen habe, habe ich mir überlegt, wie man Isso trotzdem für einzelne Artikel deaktivieren kann. Was leichter als gedacht ist.

Isso bindet man normalerweise wie folgt ein.

<section id="isso-thread" data-title="Fryboyter.de um Suchfunktion erweitert"></section>
<noscript><p>Die Kommentarfunktion kann nur mit aktiviertem Javascript genutzt werden</p></noscript>

Damit wird die Eingabemaske aber immer angezeigt. Wie kann man also verhindern, dass diese bei bestimmten Artikeln nicht angezeigt wird? Die Lösung ist bei Hugo if else.

{{ if ne .Params.nocomments true }}
<section id="isso-thread" data-title="{{ .Title }}"></section>
<noscript><p>Die Kommentarfunktion kann nur mit aktiviertem Javascript genutzt werden</p></noscript>
{{ else }}
<p>Die Kommentarfunktion ist für diesen Artikel deaktiviert</p>
{{ end }}

Hiermit wird geprüft, ob nocomments nicht true ist. Wenn ja, wird die Eingabemaske von Isso angezeigt. Ist nocomments allerdings true, wird der Hinweis angezeigt, dass die Kommentarfunktion deaktiviert ist.

Soll nun bei einem bestimmten Artikel die Kommentarfunktion deaktiviert werden, erweitert man den Frontmatter-Bereich einfach entsprechend.

---
title: Kommentarfunktion Isso unter Hugo deaktivieren
date: 2019-07-06T20:12:06+0200
categories:
- OSBN
- Allgemein
tags:
- Hugo
- Isso
- Kommentarfunktion
nocomments: true
slug: kommentarfunktion-isso-unter-hugo-deaktivieren
---
Ein Bekannter von mir nutzt für seine Internetseite ein selbst (schlecht) programmierte Lösung. Er hat sich nun selbst...

Das war es auch schon. Was man auch noch machen könnte, wäre anhand von nocomments: true zu prüfen, ob die Javascript-Datei von Isso überhaupt geladen werden soll oder nicht.

OSBN | Allgemein

Feed für Kommentarfunktion

Da Bolt CMS keine Kommentarfunktion anbietet, nutze ich hierfür Isso. In der aktuellen offiziellen Version gibt es leider keine Möglichkeit, dass man über neue Kommentare informiert wird (was den einen oder anderen Nutzer nervt (inkl. mir selbst)). In der aktuellen Entwicklerversion ist zwar ein Kommentar-Feed vorhanden, allerdings bekomme ich diese auf Uberspace 7 nicht zum Laufen.

Ich habe mir daher, bis eine neue Version von Isso auf PyPi veröffentlicht wird, eine Übergangslösung gebaut. Ab sofort findet man unter der Kommentarfunktion einen Link, über den man den RSS-Feed für die Kommentare abonnieren kann. Dieser ist nicht auf den jeweiligen Artikel beschränkt, sondern berücksichtigt Kommentare aller Artikel. Da hier nicht täglich unzählige Kommentare abgegeben werden, dürfte das kein Problem sein. Zudem habe ich den Feed auf die letzten 20 Einträge beschränkt. Der Cronjob der das Script zum Erzeugen der XML-Datei ausführt, läuft alle 15 Minuten. Somit werden neue Kommentare im Feed etwas verzögert angezeigt. Dies gilt allerdings nur für die Kommentare, die ich freigeschaltet habe.

Wer noch Fehler findet, kann sich gerne melden. Das Problem mit der Formatierung der Kommentare im Feed ist bekannt, allerdings fällt mir hierzu aktuell keine Lösung ein. Zum Benachrichtigen über neue Kommentare sollte es aber trotzdem gut genug sein.

OSBN | Allgemein