「自動的にBumpされた」メッセージを一度にすべて削除できますか?

検索してから投稿しました。
トピックを更新し続けるために「トピックの自動更新」を好みます。しかし、訪問者がトピックを閲覧したときに、多数の「自動更新」メッセージが表示されないことを願っています。

これらを時々、手動または自動(または両方)で削除する方法はありますか?

これは、私のレベルでは、私の願いが何であれ、ほとんどの場合すでに処理されていることに気づいたためです。

「いいね!」 2

こんにちは、@Bathindaさん

他の投稿と同様に、削除アイコンを直接クリックして削除できます。

「いいね!」 2

ありがとうございます。しかし、それは複数のトピックにわたる何百もの「バンプ」メッセージを削除する実用的な方法ではありません。

1つのトピックの「バンプ」メッセージをすべて選択することさえできませんでした。

「いいね!」 1

そのような一括処理のための組み込み機能はありません。

既存の自動バンプメッセージを削除するには、次のような Rails スクリプトを使用できます。

  1. サーバーに SSH で接続します。

  2. cd /var/discourse

  3. ./launcher enter app

  4. rails c

  5. Post.where("action_code = 'autobumped'").destroy_all

:warning: もちろん、万が一に備えて、必ず最初にバックアップを行ってください。

「いいね!」 4

それで十分です。
ありがとうございます。

「destroy(削除)」コマンドを与える前に、それらのメッセージをすべてリスト/表示できるコマンドはありますか?

「いいね!」 1

Data Explorer を使用して Discourse インターフェイスから行うのが最善の方法です。

次のクエリを使用します。

SELECT * from posts
WHERE action_code = 'autobumped'

「いいね!」 3

ああ!それが私を幸せにしてくれるクエリです。改めてありがとうございます。

「いいね!」 2

提示されたクエリは、すべてのトピックに含まれる「auto-bumped」メッセージのトピックを表示しますが、あまり役に立たないことがわかりました。


これは、「Auto-Bumped」メッセージが数千件含まれる数百件のトピックを返しますが、いくつのメッセージがいくつのトピックに含まれているかはわかりません。

そのため、最終的には(少し威圧的ですが)Railsコンソールの「暗室」で斧を振るうことになると思います。

一度に数千ものトピック/投稿に影響するため、少し心配しています。トピック内に「すべて選択」ボタンがあれば、すべてのバンプメッセージをまとめて選択し、トピック内でワンクリックでそれらのメッセージを削除できます。そして、誰かが「すべてのトピック」にあるそのようなすべてのメッセージ1つのコマンドだけで削除したい場合は、「rails」を入力する必要があります。

不満を言っているわけではありません。ただ自分の気持ちを表現しているだけです。

「いいね!」 1

あなたが教えてくれたレールコマンドの5行目は、それらの投稿をすべて削除する前に何かを尋ねたり、促したりしますか?それとも、警告なしに、または復元する機会なしに、指示されたことを実行するだけですか?

可能であれば、ウェブサイト全体から「bumping msgs」を削除するのではなく、まず任意のトピックから削除することはできますか?

また、削除しようとしている投稿のサンプルを表示するためのレールコマンドを提案/教えていただけますか?

よろしくお願いします。

データエクスプローラーでこれを行うと、概要を把握するのに役立つ場合があります。


SELECT p.topic_id,
       COUNT(p.id) AS count
FROM posts p
WHERE action_code = 'autobumped'
GROUP BY p.topic_id
ORDER BY count DESC

ただし、経験が浅い場合は、本番サイトでこのような変更を加えるためにレールコンソールを使用することについて、警告を付け加えます。飛び込む前に、テストサイトを立ち上げて練習することをお勧めします。:+1:

「いいね!」 3

はい、デザイナー/開発者が提供したものと同じくらい問題は解決しました。

しかし、管理者が望むときに、任意のトピックまたはすべてのトピックで「重複(自動バンプ)メッセージ」をすべて選択して削除するための、「管理者」コマンドを管理設定または表示されているトピックに含めるべきだと、私はまだ言いたいと思います。

CSS を使ってメッセージを非表示にすることもできるかもしれません。残念ながら、現在のところ post-small-action ウィジェットにはアクションタイプが CSS クラスとして含まれていないため、bump メッセージを特定してターゲットにすることはできません。テーマコンポーネントが役立つかもしれません。

「いいね!」 1

はい、データ エクスプローラー ソリューションを提案する前に確認しました。
小さなアクションに特定のクラスを追加することは、良い Feature 提案になる可能性があります。

「いいね!」 1

何か提案していただけますか。
コンポーネントにそのままコピー&ペーストできます。コーディングはできません。

プラグインAPIについてはあまり触ったことがありませんが、小さなアクション投稿にクラスを追加できるメソッドがあるのを見ました。

そこで、このコードをHeadセクションに含んだテーマコンポーネントを作成しました。

<script type="text/discourse-plugin" version="1.6.0">
  api.addPostSmallActionClassesCallback(post => {
    return ["small-action-" + post.actionCode]
  });
</script>

そして、CSSセクションにこのコードを追加しました。

.small-action.small-action-autobumped {
  display: none;
}

すると、自動バンプメッセージが消えました!

これ以外のテストは行っていないため、他に副作用があるかどうかはわかりません。small-action-[...] クラスがアプリケーションの他の場所と競合する可能性がある場合は、一意であることが保証されるプレフィックスを選択する必要があります。

「いいね!」 3

addPostSmallActionClassesCallback メソッドは先月追加されたばかりなので、かなり新しいバージョンの Discourse を使用している必要があります。

「いいね!」 2

ありがとうございます。
「その場合、一意であることが保証されているプレフィックスを選択する必要があります。」について、詳しく説明してください。

例えば、bathinda- というプレフィックスを使用すれば、Discourse の現在または将来のいかなるものとも衝突しないことが保証されます。次のようになります。

Head:

<script type="text/discourse-plugin" version="1.6.0">
  api.addPostSmallActionClassesCallback(post => {
    return ["bathinda-" + post.actionCode]
  });
</script>

CSS:

.small-action.bathinda-autobumped {
  display: none;
}
「いいね!」 2

@simonk

再度ありがとうございます。コンポーネントを作成し、正常に使用/アクティブ化しました。
ただし、「自動的にバンプされた」メッセージを非表示にした後、このようになります。

少し「好ましくない」ですが、何もない/他のソリューションよりは良いです。

なるほど、隠されていない時間差メッセージが原因なのですね。これはCSSで前の要素をターゲットにできないため、難しいです。

「いいね!」 1