Diese Anleitung enthält Anweisungen zum massenhaften Löschen aller Themen in einer Kategorie auf einer selbst gehosteten Discourse-Instanz.
Erforderliche Benutzerrolle: Systemadministrator
SSH-Zugriff auf Ihren Server ist erforderlich
Das Entfernen aller Themen aus einer Kategorie kann aus verschiedenen Gründen notwendig sein, z. B. zur Neuorganisation von Inhalten oder zum Bereinigen veralteter Diskussionen. Diese Anleitung führt Sie durch die Schritte, um diese Aufgabe auf einem selbst gehosteten Discourse-Server sicher auszuführen.
Dies ist eine zerstörende Aktion. Stellen Sie sicher, dass Sie Ihr Forum sichern, bevor Sie fortfahren.
Schritte zum Löschen von Themen in einer Kategorie
- Bestimmen Sie den Kategorien-Slug: Dies ist der Name, der in der URL der Kategorie verwendet wird.
- Greifen Sie auf Ihren Server zu: Verwenden Sie SSH, um sich auf Ihrem Server anzumelden.
ssh username@your-server.com
- Navigieren Sie zum Discourse-Verzeichnis:
cd /var/discourse
- Starten Sie die Discourse-Anwendung:
./launcher enter app
- Führen Sie den Löschbefehl aus: Ersetzen Sie
"mycategory"durch den Slug Ihrer Kategorie.
rake destroy:topics["mycategory"]
Dieser Vorgang kann je nach Anzahl der Themen einige Zeit in Anspruch nehmen.
Löschen von Themen in Unterkategorien
Um Themen in einer Unterkategorie zu löschen, fügen Sie den Slug der übergeordneten Kategorie in Ihren Befehl ein. Zum Beispiel:
rake destroy:topics["childcategory","parentcategory"]
Alle Themen in allen Kategorien löschen
Diese Aktion löscht alle Themen in jeder Kategorie!
rake destroy:topics_all_categories
Häufige Fragen
Wie lange speichert Discourse gelöschte Themen? Ich kann über einen direkten Link noch auf Themen zugreifen.
Die Themen bleiben nach dem Löschen in der Datenbank erhalten. Nur Mitarbeiter können gelöschte Themen weiterhin einsehen.
Wie kann ich Themen endgültig aus der Datenbank löschen?
Sie können Beiträge (und ihre Themen) endgültig aus der Datenbank löschen, indem Sie die destroy:posts-Rake-Aufgabe verwenden. Dazu muss die Site-Einstellung can_permanently_delete zunächst aktiviert sein.
Geben Sie die Beitrags-IDs als durch Kommas getrennte Liste an:
rake destroy:posts[4,8,15,16,23,42]
Sie können die Beitrags-IDs auch aus einer Datei pipen:
cat post_ids.txt | rake destroy:posts
Ist es möglich, das Löschen von Themen auf einen Zeitraum (zwischen zwei Daten) zu beschränken?
Dafür müssen Sie die Rails-Konsole verwenden. Ein ähnlicher Befehl wie der folgende sollte funktionieren:
Topic.where("created_at.....").each do |t|
first_post = t.ordered_posts.first
PostDestroyer.new(Discourse.system_user, first_post).destroy if first_post
end
Wie finde ich den Slug oder die ID meiner Kategorie?
Die Aufgabe destroy:topics verwendet den Kategorie-Slug (den Namen in der Kategorie-URL). Sie können alle Kategorien mit ihren IDs und Slugs auflisten, indem Sie folgenden Befehl ausführen:
rake categories:list
Zusätzliche Informationen
Weitere Informationen zu anderen administrativen Vorgängen finden Sie unter: