ウェルカムバナーをユーザーのホームページに制限する

ホームページのみにバナーを制限することは可能ですか?たとえば、最新情報にブックマークした場合に表示されないようにしたいとのことです。現在は両方のインスタンスに表示されているようです。

「いいね!」 2

はい、ウェルカムリンクバナーの設定にあります。

ユーザーがプロファイルでカスタムページ(最新版、カテゴリなど)をホームページとして設定した場合、という意味でしょうか?
その場合、その任意のページがユーザーにとっての「ホームページ」とみなされ、その新しいホームページにウェルカムバナーが表示されます。

サイトのデフォルトのホームページが /categories で、ウェルカムバナーを /categories にのみ表示したい場合(ユーザーのインターフェース設定に関係なく)、表示する を「ディスカバリー」または「すべて」に設定し、表示したいページ以外のページでウェルカムバナーを非表示にするために JavaScript を使用する必要があるかもしれません。

しかし、現在、現在のページを確実に識別する方法(ページを初めて読み込むときやページを変更するときを含む)がわからず、ウェルカムバナーを動的に非表示にすることができません。

後で試すことはできますが (:sleeping:)、これが開始点になるかもしれません。

「いいね!」 2

ああ、ありがとうございます。はい、デフォルトのレイアウトが最新に設定されているコミュニティリーダーの中には、たとえばカテゴリページにのみバナーを表示したいと考えている方もいらっしゃいます。共有していただいたリンクを確認します。

「いいね!」 2

承知いたしました。以下に動作するソリューションを示します。私の例では、ウェルカムバナーはユーザーのインターフェース設定に関係なく、/latest ページにのみ表示されます。これを /categories ページにのみ表示するようにカスタマイズできます。:slight_smile:

  1. ウェルカムリンクバナーの 表示対象 設定を、「すべて」または「ディスカバリー」に設定します。これは、バナーを表示したいページによって異なります。

  2. このスクリプトをテーマに追加します。

    <script type="text/discourse-plugin" version="1.4.0">
        //ウェルカムバナーを /latest ページにのみ表示します
        api.onPageChange(() => {
            const router = api.container.lookup('service:router');
    
            if (router.currentRoute.name === 'discovery.latest') {
                document.body.classList.add('route-discovery-latest');
            } else {
                document.body.classList.remove('route-discovery-latest');
            }
        });
    </script>
    
  3. このCSSをテーマに追加します。

    body:not(.route-discovery-latest) .welcome-link-banner-connector {
       display: none;
    }
    

参考資料:

「いいね!」 8

ありがとうございます、本当にありがとうございます!:raised_hands:

「いいね!」 3

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.