Emoji Reactions

Emoji-Reaktionsschaltflächen für Ihre Beiträge. Eine Reaktion pro Leser, optionale Zähler, keine Cookies und keine gespeicherten Roh-IPs.

Erweiterung

Emoji Reactions

Emoji-Reaktionsschaltflächen für Ihre Beiträge. Eine Reaktion pro Leser, optionale Zähler, keine Cookies und keine gespeicherten Roh-IPs.

  • Kategorie: reactions
  • Status: Verfügbar
  • Version: 0.2.1
  • Preis: Unbekannt
  • Quelle: Offizielles Plugin-Register
  • Installation: Sandbox-Plugin aus dem Register
  • Geprüft: 2026-10-21

Beschreibung

Reactions fügt Ihren Beiträgen Emoji-Reaktionsschaltflächen hinzu (standardmäßig 💗 🤔 😗). Jeder Leser wählt eine Reaktion pro Beitrag: Erneutes Klicken entfernt sie, ein Klick auf eine andere wechselt.

Funktionen

  • Bis zu 6 Schaltflächen, konfiguriert über die Admin-Seite (key=emoji:label).
  • Optionale Beschriftungen neben jedem Emoji und optionale öffentliche Zähler.
  • Eine Admin-Seite, die Ihre 10 am häufigsten bewerteten Beiträge auflistet.
  • Die Admin-Seite folgt der Sprache des Admins (Englisch oder Japanisch).
  • Keine zusätzliche Datenbank: Die Daten liegen im eigenen EmDash-Speicher des Plugins.
  • Es werden weder Berechtigungen noch Netzwerkzugriff angefordert.

Datenschutz

  • Leser werden anhand eines SHA-256-Hashes ihrer IP-Adresse und ihres User-Agents mit einem zufälligen Salt pro Website erkannt. Die IP und der User-Agent selbst werden nie gespeichert.
  • Pro Stimme gespeichert: Beitrags-ID, der Hash, die gewählte Reaktion und ein Zeitstempel. Keine Cookies.

Hinweis: Das Plugin stellt von sich aus nichts dar. Fügen Sie nach der Installation die Komponente Reactions.astro zu Ihrer Beitragsvorlage hinzu (siehe Installation).

Voraussetzungen

  • EmDash 1.x auf Cloudflare (D1)
  • Tarif Workers Paid (Sandbox-Plugins laufen in der Worker-Loader-Bindung)

Installation

1. Das Plugin installieren

Installieren Sie Reactions von dieser Seite mit Open in EmDash oder bauen Sie es aus dem Quellcode:

pnpm install
pnpm run build   # dist/

Beim Bauen aus dem Quellcode fügen Sie das Paket Ihrer Website hinzu (pnpm add file:../emdash-plugin-emoji-reactions) und tragen es in astro.config.mjs unter sandboxed: [reactions] ein.

2. Die Plugin-Sandbox aktivieren

Sandbox-Plugins benötigen die Worker-Loader-Bindung. In wrangler.jsonc (in den Vorlagen auskommentiert):

"worker_loaders": []

Stellen Sie sicher, dass src/worker.ts PluginBridge exportiert (die *-cloudflare-Vorlagen tun das bereits) und dass astro.config.mjs sandboxRunner: sandbox() setzt.

3. Die Schaltflächen zur Beitragsvorlage hinzufügen (erforderlich)

Kopieren Sie site-snippets/Reactions.astro nach src/components/ und platzieren Sie es auf Ihrer Beitragsseite:

---
import Reactions from "../../components/Reactions.astro";
// `post` comes from getEmDashEntry()
---

Verwenden Sie post.data.id (die Datenbank-ID), nicht post.id (den Slug). Slugs ändern sich, wenn ein Beitrag umbenannt wird, und übersetzte Slugs enthalten /, was das Plugin ablehnt.

Props: contentId (erforderlich), heading (ein leerer String blendet sie aus), label (zugänglicher Name der Schaltflächengruppe). Setzen Sie --rx-accent in Ihrem CSS, um es an Ihre Akzentfarbe anzupassen.

4. Ihre Schaltflächen wählen

Öffnen Sie Reactions in der Admin-Seitenleiste und bearbeiten Sie das Feld, z. B.:

love=💗:Love, hmm=🤔:Hmm, whistle=😗:Whoa

Bis zu 6 Einträge. Schlüssel beginnen mit einem Kleinbuchstaben. Zähler werden pro Schlüssel gespeichert: Das Umbenennen eines Schlüssels beginnt eine neue Schaltfläche; das Entfernen blendet sie aus, behält aber ihre Zähler.

FAQ

Die Schaltflächen erscheinen nicht auf meiner Website

  1. Prüfen Sie, ob Reactions.astro zu Ihrer Beitragsvorlage hinzugefügt wurde. Das Plugin selbst stellt nichts dar.
  2. Öffnen Sie die Browser-Konsole. Fehler werden als [reactions] state: HTTP 403 CSRF_REJECTED ... protokolliert.
  3. Wenn Sie dist/ in Ihre Website kopiert haben, statt das Paket zu installieren, prüfen Sie, ob dist/index.mjs "routes" enthält. Ohne das behandelt EmDash die öffentlichen Routen als privat und weist Anfragen ab.

Kann ich die Zähler ausblenden?

Ja. Schalten Sie Show counts auf der Admin-Seite aus. Die Zähler fehlen dann auch in der öffentlichen API und können daher nicht von der Seite gelesen werden. Sie werden weiter gezählt und bleiben für Sie auf der Admin-Seite sichtbar.

Zwei Personen in meinem Zuhause/Büro zählen als ein Leser

Leser hinter derselben IP mit demselben Browser werden als einer behandelt. Dies ist eine zwanglose Reaktionsschaltfläche, kein Abstimmungssystem.

Kann man die Schaltfläche mit Spam fluten?

Jeder Leser hat pro Beitrag eine Reaktion, wiederholte Klicks schalten sie also nur um. Die Routen sind allerdings öffentlich. Falls nötig, fügen Sie eine Cloudflare-Rate-Limiting-Regel für /_emdash/api/plugins/reactions/react hinzu.

Funktioniert es in der lokalen Entwicklung?

Ja. Wenn keine Client-IP verfügbar ist, sendet der Browser stattdessen eine zufällige ID, die in localStorage (rx-visitor) gehalten wird.

Sicherheit

Eine Sicherheitslücke melden

Bitte melden Sie Sicherheitsprobleme privat über GitHubs private Meldung von Sicherheitslücken, nicht in öffentlichen Issues.

Worauf das Plugin zugreifen kann

  • Keine Berechtigungen und kein Netzwerkzugriff. Das Plugin kann Ihre Inhalte, Medien, Benutzer oder Einstellungen außerhalb seines eigenen Speichers weder lesen noch ändern, und es kann keine anderen Dienste aufrufen.
  • Es speichert Daten nur in seinem eigenen EmDash-Speicher: Zähler pro Beitrag, einen Datensatz pro Stimme und seine Schaltflächeneinstellungen.

Über Leser gespeicherte Daten

  • Ein gekürzter SHA-256-Hash der IP-Adresse und des User-Agents des Lesers, kombiniert mit einem zufälligen Salt pro Website. Die IP-Adresse und der User-Agent selbst werden nie gespeichert.
  • Pro Stimme: Beitrags-ID, dieser Hash, die gewählte Reaktion und ein Zeitstempel. Keine Cookies.

Öffentliche Routen

state (GET) und react (POST) sind öffentlich. Beide validieren ihre Eingaben: contentId muss [A-Za-z0-9_\-:.] entsprechen, Reaktionen müssen ein konfigurierter Schlüssel sein, und Anfragekörper sind auf 1 KB begrenzt. Die Admin-Route ist privat. Um Missbrauch zu begrenzen, fügen Sie eine Cloudflare-Rate-Limiting-Regel für /_emdash/api/plugins/reactions/react hinzu.

Änderungsprotokoll

0.2.1 — 2026-10-18

  • Registry-Symbol hinzugefügt.

0.2.0 — 2026-10-15

Erste Version in der EmDash-Plugin-Registry.

  • Schalter Show labels und Show counts auf der Admin-Seite. Beschriftungen sind standardmäßig ausgeblendet und bleiben als Tooltips und Screenreader-Text erhalten. Sind die Zähler ausgeblendet, lässt auch die öffentliche API sie weg.
  • Erfordert EmDash 1.x. Die Schaltflächeneinstellungen wandern nach ctx.settings; in 0.1.x gespeicherte Schaltflächen werden übernommen.
  • Die Admin-Seite folgt der Sprache des Admins (Englisch oder Japanisch). Standardbeschriftungen sind jetzt englisch (Love / Hmm / Whoa); die Schlüssel bleiben unverändert, sodass bestehende Zähler zugeordnet bleiben.
  • Reactions.astro: protokolliert Fehler in der Browser-Konsole, statt sie stillschweigend zu verbergen, ergänzt eine Prop label und die CSS-Variable --rx-accent und dokumentiert die Übergabe von post.data.id.
  • pnpm run test endet jetzt mit einem Build, sodass dist/ immer die Deklarationen der öffentlichen Routen enthält.

0.1.0

  • Erste Version (nicht in der Registry veröffentlicht).