通知バナー

@gormusさん、インストールしようとした際にこのエラーが発生しました。

An error occurred: Error creating upload asset: splide_css. Original filename Sorry, the file you are trying to upload is not authorized (authorized extensions: wasm, jpg, jpeg, png, woff, woff2, svg, eot, ttf, otf, gif, webp, avif, js).

更新:うまくいきました。実際には、拡張機能にCSSを追加するのを忘れていました。

「いいね!」 3

同じアウトレットに2つのバナーを追加し、両方でカルーセルを選択しました。しかし、それらは積み重ねて表示されるだけです。カルーセルを機能させるために何か見落としていることはありますか?

「いいね!」 1

Hi @manuel、カルーセルを機能させるには、同じアウトレットに少なくとも 2 つのバナーが必要であり、もちろんすべてのバナーで Display in a Carousel オプションが有効になっている必要があります。バナーが 1 つだけ有効になっている場合、カルーセルはレンダリングされません。

また、

  1. ブラウザコンソールに JavaScript エラーは表示されますか?通知バナーを参照しているものはありますか?
  2. コンフリクトの可能性があることを考慮して、他のテーマ、コンポーネント、プラグインを無効にするか、セーフモードを使用して、問題を通知バナーに特定できましたか?

または、設定を共有していただけますか?そうすれば、インポートしてこちらで試すことができます。

  1. Discourse Notification Banners 管理ページで、ページ下部にある Settings Editor ボタンをクリックします。
  2. JSON データをコピーします。
  3. 機密データがあれば削除します。
  4. ここに返信するか、DM で JSON データを共有してください。
「いいね!」 2

@gormusさん、ありがとうございます!なぜうまくいかなかったのか少し途方に暮れています。2つの独立したインスタンスで設定しましたが、どちらでもうまくいきませんでした。今、最初からやり直したら、両方でうまくいきました!:+1: :upside_down_face:

「いいね!」 2

こんにちは、オーディエンスについてですが、TL0ユーザーのみをターゲットにするのは不可能のように思えますか?なぜなら、誰もがTL0だからですか?

「いいね!」 1

おっしゃる通りです、@patrickemin。信頼レベルは加算式であり、最終的にはログインしている全ユーザーがデフォルトでTL0に属することになります。たとえ手動でTL4に引き上げられたとしてもです。

そのため、現在、オーディエンスとしてTL0を選択した場合、基本的にログインしている全ユーザーを選択することになります。それ自体には価値があると思いますが、誤解を招く可能性があります。

オーディエンスフィールドのロジックを更新し、すべての信頼レベルに新しいルールを定義するつもりです。アイデアをいただきありがとうございます : )

「いいね!」 2

こんにちは、@gormus さん。nolo への返信について、あなたのメモに従いましたが、どういうわけか通知をカルーセルとして実行できません。スタックされたメッセージとして表示されるだけです。テストメッセージが 2 つあり、どちらもカルーセルが有効になっており、同じアウトレットに配置されています。コンソールに JS に関するエラーはありません。他のすべてのコンポーネントを無効にしましたが、何も機能しないようです。何かアイデアはありますか?

@marksalter さん、いつもの原因はすでに確認済みとのことですね。他に考えられるのは、設定のエクスポートを使用して問題を再現してみることです。必要であればデータを無害化してから、エクスポートファイルをDMで送ってください。ただし、私はあと10日間は戻りません :slight_smile:

バナーメッセージを更新する際に、このエラーが発生しました。

JSONポインタープロパティ「/0/enabled_groups」は、有効なグループIDの配列である必要があります。

「オーディエンス」フィールドに削除された(または名前が変更された)ユーザーグループへの参照がありませんか?

「いいね!」 1

それがすべてでした。グループはIDのみで識別され、名前は関係ないと思っていました。

「いいね!」 1

Trust Levels を使用して、より効果的にターゲットオーディエンスを設定するためのアイデアを検討してきました。

皆さんに確認していただきたいことがあります。

これは破壊的な変更なので、まず本番環境ではない環境でテストすることを強くお勧めします。

このバージョンをインストールするには、Notification Bannersstaging ブランチを使用してください。

破壊的な変更

バナーの可視性がオーディエンスフィールドの値を使用して評価される場合、訪問者のすべての trust_level_* ロールは、最も高いレベルを除いて無視されます。

たとえば、ユーザーが support_teamblogtrust_level_0trust_level_1trust_level_2 というロールを持っているとします。

オーディエンスフィールドは、ユーザーが support_teamblogtrust_level_2 のみを持っていると見なします。

したがって、バナーが TL2 ユーザーのみをターゲットにする必要がある場合、オーディエンス フィールドは trust_level_2 に設定する必要があります。他のトラストレベルのユーザーにはバナーは表示されません。

この変更を明確にするために、オーディエンスフィールドの説明も更新しました。

これらの変更をさらにテストし、おそらく 9 月末までに新しいリリースを作成する予定です。提供していただけるフィードバックをいただけると幸いです。

よろしくお願いします!

「いいね!」 2

v1.3.0 がリリースされました。

本番環境にデプロイする前に、必ずテストしてください。

主な変更点:

  • バナーが設定ページに表示される順序で並べ替えられるようになりました。「表示順」フィールドの代わりに、ネイティブの 並べ替え ボタンを使用してバナーを並べ替えることができます。

  • 対象ユーザーフィールドの動作が変更されました:

    このバナーを表示できるユーザーグループを選択します。少なくとも1つのグループを選択する必要があります。

    すべてのユーザーと訪問者に表示するには: everyone グループを選択します。

    信頼レベルに関する重要事項: 信頼レベル(例:trust_level_3)を選択すると、その正確なレベルのユーザーにのみバナーが表示されます。それより高いまたは低いレベルのユーザーは含まれません。

  • Splide カルーセルのデフォルトオプションが変更されました:
    変更前:

    { "arrows": false, "autoHeight": true, "autoplay": true, "direction": "ttb", "focus": "center", "height": "15vh", "gap": 0, "type": "loop" }
    

    変更後:

    { "autoHeight": true, "height": "8rem", "arrows": false, "autoplay": true, "direction": "ttb", "focus": "center", "gap": 0, "type": "loop" }
    
「いいね!」 2

こんにちは、最新のアップデートでサイトが壊れました(サイトヘッダーのみ読み込まれます)。TCを無効にしたらすべて元に戻りました。私だけかどうか確認させてください。急ぎません :grinning_face_with_smiling_eyes:

「いいね!」 1

レポートありがとうございます、@patrickemin さん。提供いただいた詳細情報も確認しました。

以前にデプロイしたホットフィックス(v1.3.1)で、v1.3.0 で導入した問題を修正したはずです。ご迷惑をおかけした皆様、申し訳ありませんでした。

コンポーネントを動作させようとしていますが、作成したテストバナーが表示されません。Discourse は最新バージョン(約3日前)を使用しており、コンポーネントは 1.3.1 です。

オプションは正しく設定されていると確信しています。テストバナーを表示するための3つの場所すべてを試しましたが、何も表示されません。

他にバグがあるのでしょうか、それとも私の問題でしょうか?どこを確認すればよいでしょうか?

コンソールにエラーは記録されていませんか?

コンソールにエラーがない場合は、設定エディターを使用して構成をDMで送信していただけますか?
機密情報が含まれている場合は、メッセージ文字列を必ず無害化してください。

非推奨の通知のみです。また(Operaのみで、Firefoxでは表示されず、Content security policy script src は長い間 'unsafe-eval' に設定していました):

サイトのコンテンツセキュリティポリシーにより、JavaScriptでの「eval」の使用がブロックされます

コンテンツセキュリティポリシー(CSP)は、攻撃者がサイトに不正なコードを挿入するのを困難にするために、任意の文字列をJavaScriptとして評価することを防ぎます。

この問題を解決するには、eval()new Function()setTimeout([string], ...)setInterval([string], ...) を文字列の評価に使用しないでください。

どうしても必要な場合は、script-src ディレクティブに unsafe-eval を許可されたソースとして追加することで、文字列評価を有効にすることができます。

ありがとうございます。現在アクティブなテストバナーは1つだけなので、ここに投稿することもできます。

[
	{
		"setting": "banners",
		"value": [
			{
				"title": "テストバナータイトル",
				"message": "テストバナーテキスト テストバナーテキスト",
				"date_after": "2025-11-01 12:00:00Z",
				"date_before": "2025-12-01 12:00:00Z",
				"dismissable": true,
				"plugin_outlet": "top-notices",
				"enabled_groups": [
					1
				]
			}
		]
	},
	{
		"setting": "splide_options__above_site_header",
		"value": "{ \"autoHeight\": true, \"height\": \"8rem\", \"arrows\": false, \"autoplay\": true, \"direction\": \"ttb\", \"focus\": \"center\", \"gap\": 0, \"type\": \"loop\" }"
	},
	{
		"setting": "splide_options__below_site_header",
		"value": "{ \"autoHeight\": true, \"height\": \"8rem\", \"arrows\": false, \"autoplay\": true, \"direction\": \"ttb\", \"focus\": \"center\", \"gap\": 0, \"type\": \"loop\" }"
	},
	{
		"setting": "splide_options__top_notices",
		"value": "{ \"autoHeight\": true, \"height\": \"8rem\", \"arrows\": false, \"autoplay\": true, \"direction\": \"ttb\", \"focus\": \"center\", \"gap\": 0, \"type\": \"loop\" }"
	}
]

開始日と終了日なし、および他の2つのプラグインアウトレットも試しました。また、サイトにログインせずにFirefoxで効果を確認するために、Administrators の代わりに everyone を試しました。そして、splideオプションは変更していません。

「いいね!」 1

レポートありがとうございます @Roi

設定にカテゴリの選択が含まれておらず、NB が誤ってバナーへのアクセスを拒否していました。

修正をプッシュし、v1.3.2 をリリースしました。通知バナーを更新してください。

「いいね!」 1

はい、うまくいきました!

はい、カテゴリ選択は空にしておきました。どこにでも表示されると思ったからです。では、オプションが必要だったのはコンポーネントのバグだったのでしょうか?いずれにせよ、修正されました。ありがとうございます!:slight_smile:

このコンポーネントは初めてなので、いくつか質問してもよろしいでしょうか?

コミュニティへの参加をユーザーに通知/リマインドしたいと考えています。アイデアは、4〜8週間ごとにバナーを表示して、ユーザーに繰り返しリマインドすることでした。ユーザーが一度却下すると、表示されなくなります。ここまでは順調です。

開始日と終了日を変更するだけで、保存後に却下したユーザーにバナーが再度表示されますか?(どうやって機能するのでしょうか?Cookieだと思いますか?)それとも、完全に新しいバナーを作成する必要がありますか?

誰かが以前のトピックでサイクルについて言及していました。つまり、8週間ごとにバナーを表示するということです。これは完全にメンテナンスフリーなので素晴らしいオプションですが(他のものを変更したくない場合)。しかし、新しいサイクルが始まっても、却下したユーザーにバナーが表示されるのかという疑問が残ります。