新しい「デフォルトのホームページ」サイト設定

現在、Discourse サイトのホームページを変更するには、サイト設定の top menu(トップメニュー)を構成し、希望するホームページをリストの最初のオプションとして設定する必要があります。この動作は、新しい管理者にとってはかなり分かりにくいです。

本日、このプロセスをより明確で簡単にするために、新しい default homepage(デフォルトのホームページ)サイト設定を追加する変更をマージします。

既存のサイトでは何も行う必要はありません。この新しい設定のデフォルト値は first item in top menu(トップメニューの最初の項目)であり、これまでと同じ機能です。新しい設定にも同じオプションが用意されています。new(新しいトピック)のようにログインしたユーザーのみがアクセスできるページをホームページに設定した場合でも、匿名の訪問者がアクセスできる最初の top menu(トップメニュー)の項目にフォールバックします。

この新しい設定により可能になる変更の一つは、トップメニューに含まれていないページをホームページに設定できるようになったことです。例えば、categories(カテゴリ一覧)をホームページに設定し、top menu(トップメニュー)設定からそれを削除することができます。これは、すべてのカテゴリへのリンクがサイドバーでも利用可能だからです。

今後、ホームページ用の新しいオプションを追加する可能性がありますので、今後のアップデートにご注目ください!

「いいね!」 25

素晴らしい追加ですね、Krisさん!:clap:

custom-homepage アウトレットを通じて新しいホームページを導入しようとしているので、プラグインやテーマコンポーネントがカスタムホームページを導入した場合、この新しい設定でカスタムホームページが含まれるかどうか気になります。私はユーザー設定を更新して、ホームページ設定をデフォルトの -1 にリセットする予定でした。

つまり、この新しい設定はユーザー設定のホームページ設定のオプションも更新するのでしょうか?

最後に、デフォルトのホームページトップメニューの最初の項目 に設定されており、api.addNavigationBarItem() を通じてカスタムリンクが追加され、最初の項目として配置されている場合、それは実際に最初の項目として扱われるのでしょうか?

「いいね!」 4

いいえ、これまでと同じです。カスタムホームページ用のテーマ修飾子は、サイト設定全体を上書きします。複数のテーマが利用可能なサイトで、一部のテーマにカスタムホームページがない場合、フォールバックの管理が必要になるため、このナビゲーションは少し複雑です。検討すべき点ですね。

まだではありません… オプションは依然としてトップメニューと同じですが、変わった点として、default(デフォルト)が今ではユーザー設定で常に利用可能になりました(以前は条件付きでした)。ユーザー設定の「デフォルト」はサイト設定に従います。

これも「まだではありません」です。テーマ内のカスタムホームページを除き、Discourseサイトのホームページには、トピック一覧ページ(または /categories)であるというさまざまな要件があります。一方、api.addNavigationBarItem() の要件ははるかに緩やかです。

「いいね!」 3

Krisさん、ありがとうございます。この件には非常に熱意を持って取り組んでおり、その進捗がどうなるか楽しみにしています。

共有できる観察結果として、テーマコンポーネントがカスタムホームページを導入した場合、個別のホームページ設定を行っているユーザーはそれを決して見ることができないという点があります。

トップメニュー項目とは異なり、カスタムホームページにはカスタムメニュー項目を作成できるパスがありません。

これが、極端な決定のように感じられるものの、ユーザー設定をデフォルトの -1 値にリセットする計画を立てていた主な理由です。私の理解では、すべてのユーザーに新しいホームページを表示させるための唯一の選択肢となるでしょう。その後、ユーザーは依然として自分の設定でそれをカスタマイズすることができます。

「いいね!」 2

パスは /custom だと思われます。

「いいね!」 2

なるほど、勉強になりました。@Moin さん、確かにその方法で動作しますね。

ただ、ホームページのパスとして /custom を使うのは、私なら最初の選択肢には入れないかなぁ :))

#パーマリンクを使用して /home のようなパスを使用できます

はい、ありがとうございます。ただし、それはリクエストを「リダイレクト」するだけで、最終的には /custom に到達します。

「いいね!」 1

匿名ユーザーがカスタムホームページにアクセスできるようにしたいのですが、ログイン済みユーザーは最新投稿ページにアクセスできるようにしたいです。あるいは、少なくともそのオプションを提供できるようにしたいです。

このユースケースは、Discourseをカジュアルな訪問者向けにカスタマイズされた単一のフロントページ/ランディングページとして提供しつつ、常連ユーザーが摩擦なく完全なフォーラム体験にアクセスできるようにすることです。

通常、これは別のウェブサイトとサブドメイン上のDiscourseを使用して実現されますが、これには管理とコストのオーバーヘッドが大幅に増加します。すべてを1つのインスタンスにまとめて簡素化したいです。

この新しい設定で現在可能でしょうか?

「いいね!」 1

ああ、それは興味深いケースですね。ただし、現時点ではサイト設定では実現できません。

いくつかの代替案が思い浮かびます:

  • 両方のためのカスタムホームページを構築し、ユーザーチェックで分岐させる(明らかに、すぐに使えるものを単に使用するよりも少しメンテナンスが必要になります)

  • 「デフォルトのホームページ」のユーザーインターフェース設定はカスタムテーマのホームページを上書きするため、それを利用するための少しのカスタマイズで動作するかもしれません… 例えば

    import { setDefaultHomepage } from "discourse/lib/utilities";
    
    export default {
     name: "force-homepage",
     after: "url-redirects",
    
     initialize(container) {
       if (container.lookup("service:current-user")) {
         setDefaultHomepage("latest");
       }
     },
    };
    

    その後、CSSでそのユーザー設定を隠すことができます

「いいね!」 1

クリス、ありがとう!

ユーザーが独自のホームページを選択できる機能を失うのは少しためらわれます。ただし、実際にそうする人はほとんどいないかもしれません。

これは良い知らせです!

その場合、私たちの長年の Custom Homepage for Groups テーマコンポーネントが機能するかもしれません:

ただし、(新しい)コアのカスタムホームページと連携させるには、いくつかの調整が必要になるかもしれません。

「いいね!」 2