検索バナーテーマコンポーネントの非推奨化

ここ数か月間、Discourseのコア製品の一部として、ウェルカムバナー機能の開発を行ってきました。このコアのウェルカムバナー機能は、新しい訪問者や再訪問者をコミュニティに迎え入れ、彼らのニーズや関心に合ったコンテンツを簡単に検索できるようにするものです。この新しいコアバナーの導入により、製品の複雑さを軽減し、すべてのDiscourseユーザーがコア機能の継続的な改善から恩恵を受けることを目指して、Search Bannerテーマコンポーネントの廃止を進めます。

このトピックでは、Search Bannerテーマコンポーネントの現在のユーザーにとっての廃止の意味について説明します。

ホスト済みの顧客の場合…

2025年11月20日から、ホスト済みの顧客をSearch Bannerコンポーネントからウェルカムバナー機能へ移行し始めます。現在このコンポーネントをご利用中の場合は、お使いのプラン階層に応じた正確なタイミングの詳細が記載されたメッセージが届きます。

この移行では、テーマコンポーネントで更新したサイトテキスト(例: search_banner.headline, search_banner.subhead, search_banner.search_button_text)および show on, plugin outlet, background image のテーマコンポーネント設定の値が、コア機能の設定にコピーされます。

この移行の目的は、コア機能で作成されたバナーがテーマコンポーネントで作成されたバナーとほぼ同じ外観になるように、目に見える影響を最小限に抑えることです。バナーに画像が使用されているコミュニティでは、画像の配置がわずかにずれる場合がありますが、表示させたいコンテンツを中央に配置するように画像をトリミングすることで対処できます。

この移行後、テーマコンポーネントは無効化され、テーマとコンポーネントページ(/admin/config/customize/components)から安全に削除できます。

セルフホストユーザーの場合…

2025年12月15日までに、テーマコンポーネントからコア機能へ手動または提供されたスクリプトを使用して移行する予定です。

手動移行

Search Bannerテーマコンポーネントのサイトテキストと設定が、コアウェルカムバナーの同じ機能とどのように対応するかを以下に示します。

設定の説明 Search Bannerテーマコンポーネント Welcome Bannerコア機能
ウェルカムバナーに表示される見出しテキスト。 search_banner.headline サイトテキスト js.welcome_banner.header.anonymous_members および js.welcome_banner.header.logged_in_members サイトテキスト
ウェルカムバナーに表示されるサブヘッドテキスト。 search_banner.subhead サイトテキスト js.welcome_banner.subheader.anonymous_members および js.welcome_banner.subheader.logged_in_members サイトテキスト
バナー上の検索ボタンに使用されるテキスト。\* search_banner.search_button_text サイトテキスト js.welcome_banner.search_placeholder サイトテキスト
ウェルカムバナーを表示するページを決定する設定。 show on テーマコンポーネント設定 Welcome banner page visibility サイト設定
ウェルカムバナーがページのどこに表示されるかを決定する設定。 plugin outlet テーマコンポーネント設定 Welcome banner location サイト設定
ウェルカムバナーに使用される背景画像。 background image light テーマコンポーネント設定 Welcome banner image サイト設定

\* 注:コアウェルカムバナー機能では明示的な検索ボタンはサポートされていないため、類似の結果を得るために、カスタマイズ可能な検索フィールドのプレースホルダーテキストにこのテキストをマッピングすることをお勧めします。

スクリプトによる移行

移行には、以下の順序で実行しなければならない3つの rake タスクがあります。

  1. コンポーネント設定の移行:
    themes:advanced_search_banner:1_migrate_settings_to_welcome_banner
  2. コンポーネント翻訳の移行:
    themes:advanced_search_banner:2_migrate_translations_to_welcome_banner
  3. コアバナーの有効化、使用中のテーマからのコンポーネントの除外、コンポーネントの無効化:
    themes:advanced_search_banner:3_exclude_and_disable

コンテナ内で実行するファイル \<random_name\>.sh

  1. task_1.sh
#!/bin/bash

cd /var/www/discourse && rake themes:advanced_search_banner:1_migrate_settings_to_welcome_banner
  1. task_2.sh
#!/bin/bash

cd /var/www/discourse && rake themes:advanced_search_banner:2_migrate_translations_to_welcome_banner
  1. task_3.sh
#!/bin/bash

cd /var/www/discourse && rake themes:advanced_search_banner:3_exclude_and_disable

各 rake タスクを個別に実行することを推奨します。これにより、移行プロセスの制御がより容易になります。

また、3つすべてを順番に実行する便利なタスク themes:advanced_search_banner:migrate_all も用意されていますが、使用は自己責任で行ってください。

「いいね!」 7

次のようなことを意味しているのでしょうか?

#!/bin/bash
cd /var/www/discourse && rake themes:advanced_search_banner:migrate_settings_to_welcome_banner  && rake themes:advanced_search_banner:migrate_translations_to_welcome_banner &&  rake themes:advanced_search_banner:exclude_and_disable

<task_1_2_or_3> から多くのセルフホストユーザーがこれを推測するのは難しいと思います。

これらの Rake タスクは失敗する可能性がありますか? すべてを一度に実行しても大丈夫ですか? そうであれば、すべてをまとめて実行する1つの Rake タスクを用意するのはどうでしょうか?

ユーザーが次のようなコマンドを望んでいるかもしれません:

docker exec -t app bash -c `cd /var/www/discourse && rake themes:advanced_search_banner:migrate_settings_to_welcome_banner  && rake themes:advanced_search_banner:migrate_translations_to_welcome_banner &&  rake themes:advanced_search_banner:exclude_and_disable`

つまり、これを理解できないユーザーは、古い設定やカスタマイズされたテキストをすべて失うということでしょうか?

3月までアップグレードしないユーザーについてはどうでしょうか? その時点でもこれらの Rake タスクを実行できるのでしょうか? 12月15日の重要性がよくわかりません。

「いいね!」 3

私はスクリプトを作成した同僚に質問の最初の部分について手伝ってもらいますが、最後の2つの質問については以下のようにお答えします。

いいえ、そうではありません。

スクリプトは一つの選択肢であり、手動での移行も別の選択肢です。そのため、テーマコンポーネントの設定/文字列がウェルカムバナーの設定/文字列にどのように対応するかを、非常に明確に説明しました。

12月15日は、ホストされた顧客の移行を完了する日であり、Search Bannerコンポーネントのサポート/保守を公式に終了する日です。このコンポーネントの他のユーザーには、将来Discourseコアと互換性がなくなる前に移行することを推奨しています。

人々が後で待つことを選択した場合、これらのタスクを実行したり、手動で移行したりすることは可能ですが、その間、非サポートのテーマコンポーネントを実行することになります。

「いいね!」 4

正解です。提供されたコマンドは、3つのタスクを順番に実行します。各タスクには、実行順序を示すために数字の接頭辞を付けています。

ご指摘ありがとうございます。スクリプト移行セクションを更新し、より明確にしました。

100%の成功を保証することはできませんが、失敗する可能性は非常に低いように対策を講じています。

はい、便利なタスクとして themes:advanced_search_banner:migrate_all を追加しました。

「いいね!」 2

素晴らしい!それは大いに役立つと思います。私たちのような人間は、コンテナ内で少数のテイクタスクを実行することに抵抗はありませんが、ほとんどのセルフホスティング者はそうではありません。

テーマコンポーネントを更新して、管理パネルにここを指す減価償却リンクを付けることができれば、このトピックが存在することを知るのに役立つでしょう。

私がやりたいのは、テーマコンポーネントがインストールされているかどうかを、できればAPIから見つける方法を見つけることです。テーマコンポーネントのJSONを取得し、jqで実行してコンポーネント名でフィルタリングするのが良いでしょう。それでうまくいくはずです。私のダッシュボードにはAPIキーがあります。そうすれば、Ansibleでコンテナ内のRakeタスクを実行できます!

「いいね!」 2

自動的にコンポーネントをインストールする公式テーマは、将来的にテーマが機能するためにコアでウェルカムバナーを手動で設定する必要があることに誰も気づかずにコンポーネントをインストールしないように、事前に変更されていますか?

「いいね!」 2