キーワードブロック機能の追加

|||
|-|-|-|
| :information_source: | 概要 | このテーマコンポーネントを使用すると、ユーザーはキーワードをブロックできます。機能するには、管理設定で3つのカスタムユーザーフィールドを作成する必要があります。
| :eyeglasses:|プレビュー|ユーザーフィールドの作成が必要なため、テーマクリエーターでプレビューすることはできませんが、以下にスクリーンショットを添付しました。
| : hammer_and_wrench:|リポジトリ| Github - a-very-old-sock/discourse-keyword-block
| : question:|インストールガイド|テーマまたはテーマコンポーネントのインストール方法
| : open_book:|Discourseテーマ初心者の方へ| Discourseテーマの使用に関する初心者向けガイド

< !–自動インストールボタンの「repoName」と「repoURL」を入力してください-- >

このテーマコンポーネントをインストール

< !–このテーマ/コンポーネントを1〜2文で説明してください-- >

このテーマコンポーネントを使用すると、ユーザーはキーワードをブロックできます。これは、ユーザーが[設定] > [プロフィール]で指定します。機能するには、管理設定で3つのカスタムユーザーフィールドを作成する必要があります。

< !–スクリーンショットを追加してください(該当する場合)-- >

トピックのタイトルまたはトピックの抜粋でキーワードをブロックします。

キーワードを含むトピックまたは返信投稿、およびキーワードを含む推奨トピックをブロックします。

< !–詳細を追加し、設定を説明してください(該当する場合)-- >

このテーマコンポーネントを使用すると、個々のユーザーが希望しないキーワードを指定でき、そのキーワードを含むトピックや返信投稿を「表示するにはここをクリック」というリンクとともに非表示にできます。「監視単語」は管理者設定であり、サイト全体で全ユーザーに適用されますが、これは個々のユーザーが自分でブロックしたいキーワードを指定できるようにするものです。

例:ペットフォーラムで、ペットの毛の処理に関する一般的なスレッドがあり、メインのトピックには特定の動物のタグが付いていないとします。ユーザーAが犬について返信し、ユーザーBが猫について返信しますが、ユーザーAは猫に関するものは一切見たくありません。このテーマコンポーネントを使用すると、ユーザーAは「cat」をブロックリストに追加でき、トピックまたは返信のどこかに「cat」が表示されると、「猫が含まれているためブロックされました」に置き換えられ、「表示するにはここをクリック」で元に戻すことができます。

ユーザーは、[設定] > [プロフィール]のカスタムユーザーフィールドに、ブロックしたいキーワードのコンマ区切りリストを指定する必要があります。また、ブロックするキーワードが、大文字と小文字を区別するか、単語全体で一致する必要があるかを指定できます。(大文字と小文字の区別と単語全体の一致は、個々のキーワードではなく、ブロックリスト全体に適用されます)。

このテーマコンポーネントを使用するには、[管理] > [カスタマイズ] > [ユーザーフィールド]で3つのカスタムユーザーフィールドを作成する必要があります。デフォルトでは、テーマコンポーネントの設定では、これらのユーザーフィールドが以下の順序で1、2、3であると想定されています。他のカスタムユーザーフィールドが定義されている場合は、テーマコンポーネント設定で正しいユーザーフィールド番号を入力する必要があります。(ユーザーフィールドの番号付けは1から始まるため、定義されている他のユーザーフィールドの数に応じて下に数えてください)。詳細については、Metaのカスタムユーザーフィールドの作成と設定ガイドを参照してください。

1 - ユーザーのブロック用語リスト

フィールドタイプ:テキストフィールド

フィールド名:(任意の名前でかまいません)ブロック用語

フィールドの説明:(任意の名前でかまいません)投稿またはトピックに表示される単語またはフレーズをブロックします。コンマ区切り。ユーザー名をブロックするには、単語全体の一致が選択されている場合は@を含めてください。

:white_check_mark:サインアップ後に編集可能

:cross_mark:サインアップ時に必須

:cross_mark:公開プロフィールに表示

:cross_mark:ユーザーカードに表示

:cross_mark:検索可能

2 - 大文字と小文字の区別

フィールドタイプ:確認

フィールド名:(任意の名前でかまいません)ブロック用語 - 大文字と小文字を区別する

フィールドの説明:(任意の名前でかまいません)「ブロック用語」リストの単語は、大文字と小文字を区別します。

:white_check_mark:サインアップ後に編集可能

:cross_mark:サインアップ時に必須

:cross_mark:公開プロフィールに表示

:cross_mark:ユーザーカードに表示

:cross_mark:検索可能

3 - 単語全体または部分的な単語を検索

フィールドタイプ:確認

フィールド名:(任意の名前でかまいません)ブロック用語 - 単語全体

フィールドの説明:(任意の名前でかまいません)ブロック用語は、部分的な単語ではなく、完全な単語として表示される必要があります。

:white_check_mark:サインアップ後に編集可能

:cross_mark:サインアップ時に必須

:cross_mark:公開プロフィールに表示

:cross_mark:ユーザーカードに表示

:cross_mark:検索可能

以下のCSSはテーマコンポーネントに含まれており、カスタムユーザーフィールドがサインアップフォームに表示されないようにします。サインアップフォームに表示したい他のカスタムユーザーフィールドがある場合は、独自のカスタムCSSでこれをオーバーライドする必要があります。

.login-form .user-fields {
    display: none;
}

デフォルトのテーマでのみテストしました。投稿とトピックは、カテゴリが[カテゴリ/最新]および[カテゴリ/トップ]を表示するように設定されている場合にブロックされますが、[カテゴリ/特集]またはボックスカテゴリビューではブロックされません。自分のサイトでは必要ないため、これを変更する可能性は低いですが、プルリクエストは歓迎します。

これは現在、ブラウザに表示されるタイトルまたは抜粋にキーワードが含まれている投稿のみをブロックします。検索結果またはトピックリストを表示する際に、投稿全体のコンテンツを確認する方法を見つけることができませんでしたが、その方法についてのアイデアがあれば歓迎します。

これはフルページ検索ビューでも機能することを意図していますが、2023年2月24日現在、それを機能させるのに苦労しています。検索でブロックを機能させることができれば、これを編集します。

これはトピック抜粋テーマコンポーネントと互換性があります。トピックリストプレビューとは互換性がありません。他のテーマコンポーネントでは広範囲にテストしていません。

「いいね!」 3

カスタムユーザーフィールドを作成し、コンポーネントを有効にすると、次のようになります。

これは何を警告しようとしているのでしょうか?おそらくこれのせいですか?

User Keyword Blocker theme/component is throwing errors: TypeError: null is not an object (evaluating 'e.match')

backtrace
Message

User Keyword Blocker theme/component is throwing errors:
TypeError: null is not an object (evaluating 'e.match')

Backtrace

viewingCategoryId@https://foorumi.katiska.eu/theme-javascripts/2d7e05cf5f7eb3e5f8699871f25f32a21d9221c2.js?__ws=foorumi.katiska.eu:209:77
@https://cdnfoorumi.katiska.eu/assets/vendor-f2e959203bc406b4698a4388ad51464d9ee2c5ff7b4011f332b7d88c6ce5dab8.br.js:1347:71
@https://cdnfoorumi.katiska.eu/assets/vendor-f2e959203bc406b4698a4388ad51464d9ee2c5ff7b4011f332b7d88c6ce5dab8.br.js:3677:13
get@https://cdnfoorumi.katiska.eu/assets/vendor-f2e959203bc406b4698a4388ad51464d9ee2c5ff7b4011f332b7d88c6ce5dab8.br.js:1347:56
Ee@https://cdnfoorumi.katiska.eu/assets/vendor-f2e959203bc406b4698a4388ad51464d9ee2c5ff7b4011f332b7d88c6ce5dab8.br.js:1324:40
map@[native code]
@https://cdnfoorumi.katiska.eu/assets/vendor-f2e959203bc406b4698a4388ad51464d9ee2c5ff7b4011f332b7d88c6ce5dab8.br.js:5042:163
@https://cdnfoorumi.katiska.eu/assets/vendor-f2e959203bc406b4698a4388ad51464d9ee2c5ff7b4011f332b7d88c6ce5dab8.br.js:1347:71
@https://cdnfoorumi.katiska.eu/assets/vendor-f2e959203bc406b4698a4388ad51464d9ee2c5ff7b4011f332b7d88c6ce5dab8.br.js:3677:13
get@https://cdnfoorumi.katiska.eu/assets/vendor-f2e959203bc406b4698a4388ad51464d9ee2c5ff7b4011f332b7d88c6ce5dab8.br.js:1347:56

Env

HTTP HOSTS: foorumi.katiska.eu

それで…一体何が間違っていたのでしょうか?

「いいね!」 1

うーん、よくわかりません。新しく作成したユーザーフィールドでも、存在しないユーザーフィールドでも再現できませんでした。

デフォルトのテーマを使用しているようですね。他に有効にしているテーマコンポーネントはありますか?正規表現のマッチングに関係しているようですが、何も見つからなくてもエラーは発生しないはずです。

もちろん、他のコンポーネントもあります :wink: しかし、確かに、これと他のコンポーネントまたはプラグインとの間に競合がある可能性があります。

いずれかの時点で、もう少し深く掘り下げてみます。

そして、その時点で何かが起こりました :wink:

この問題は、トピックリストプレビューとの間で発生しています。少なくとも私の設定では。

なので、どちらが修正するか、そして何を修正するかは、あなたと@merefieldさんに議論してもらいましょう :wink:

「いいね!」 1

サードパーティ製テーマコンポーネントとの競合をサポートするには、残念ながらあまりにも忙しすぎます。プルリクエストは歓迎します。今のところ、それらの間で選択する必要があります。:slight_smile:

「いいね!」 2

ユーザーのミュート機能を拡張するためにこれを使用できるかどうか疑問に思っています。

つまり、ミュートされたユーザーをブロックされたユーザーリストに入れて、ミュートされたユーザーへの返信を非表示にするということです。

理論的には可能だと思いますが、現時点では簡単な方法が見つかっていません。現在、decorateCooked を使用していますが、返信情報がある親要素に簡単にアクセスできないようです。これをさらに調整して機能させることができるかもしれませんが、約束はできません。

これにより、ブロックリストにユーザー名が含まれている場合、投稿内のユーザー名のメンションがブロックされます。全単語マッチングがオンになっている場合、ブロックリスト内のユーザー名には @メンションを含める必要がありますが、全単語マッチングがオフになっている場合は、@なしのユーザー名のみを含めることができます

「いいね!」 1

こちらも互換性を持たせることはできないと思いますが、OPで互換性がないことを明記しておきました。PRは歓迎します。

申し訳ありません。確認します。ユーザーのブロック/ミュート機能の拡張とは、ユーザー名をブロックワードリストに追加することです。ユーザー名が次のように表示される場合、理論的には次のようになります。