Questa guida fornisce istruzioni su come eliminare in blocco tutti i topic allâinterno di una categoria su unâistanza Discourse self-hosted.
Livello utente richiesto: Amministratore di sistema
Ă necessario lâaccesso SSH al server
La rimozione di tutti i topic da una categoria può essere necessaria per vari motivi, come il riorganizzazione dei contenuti o la cancellazione di discussioni obsolete. Questa guida illustra i passaggi per eseguire questa operazione in modo sicuro su un server Discourse self-hosted.
Questa è unâazione distruttiva. Assicurati di eseguire un backup del tuo forum prima di procedere
Passaggi per eliminare i topic in una categoria
- Identifica lo slug della categoria: è il nome utilizzato nellâURL della categoria.
- Accedi al tuo server: Utilizza SSH per accedere al tuo server.
ssh username@your-server.com
- Naviga nella directory di Discourse:
cd /var/discourse
- Entra nellâapplicazione Discourse:
./launcher enter app
- Esegui il comando di eliminazione: Sostituisci
\"mycategory\"con lo slug della tua categoria.
rake destroy:topics[\"mycategory\"]
Questo processo potrebbe richiedere tempo a seconda del numero di topic.
Eliminazione di topic nelle sottocategorie
Per eliminare i topic in una sottocategoria, includi lo slug della categoria padre nel comando. Ad esempio:
rake destroy:topics[\"childcategory\",\"parentcategory\"]
Eliminare tutti i topic in tutte le categorie
Questa azione cancellerĂ tutti i topic da ogni categoria!
rake destroy:topics_all_categories
Domande Frequenti
Per quanto tempo Discourse conserva i topic eliminati? Posso ancora accedere ai topic con un link diretto.
I topic rimangono nel database dopo lâeliminazione. Solo lo staff potrĂ ancora vedere i topic eliminati.
Come posso eliminare definitivamente i topic dal database?
Puoi eliminare definitivamente i post (e i loro topic) dal database utilizzando lâattivitĂ rake destroy:posts. Questo richiede che sia prima abilitata lâimpostazione del sito nascosta can_permanently_delete. Passa gli ID dei post come una lista separata da virgole:
rake destroy:posts[4,8,15,16,23,42]
Puoi anche inviare gli ID dei post da un file:
cat post_ids.txt | rake destroy:posts
Ă possibile limitare lâeliminazione dei topic a un periodo di tempo (tra due date)?
Dovresti farlo dalla console Rails, un comando simile al seguente dovrebbe funzionare:
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
Come trovo lo slug o lâID della mia categoria?
LâattivitĂ destroy:topics utilizza lo slug della categoria (il nome nellâURL della categoria). Puoi elencare tutte le categorie con i loro ID e slug eseguendo:
rake categories:list
Informazioni Aggiuntive
Per maggiori informazioni su altre operazioni amministrative, consulta: