(置き換え済み) メインのDiscourseロゴから外部サイトへのリンク

:information_source: Discourse では、このユースケースをサポートするために official テーマコンポーネントが提供されています。

元のコンテンツ

ほとんどのサイトにとって、メインの Discourse ロゴが外部サイトにリンクするのは良い考えではないと思いますが、メインの Discourse ロゴをクリックしたときにユーザーを外部ウェブサイトに誘導することが理にかなっている例外もあります。そうしたい場合は、次の方法で行います。

新しいテーマコンポーネントを作成する

:warning: このガイドのこのセクションは、まもなく専用トピックに抽出されます。

管理 / カスタマイズ / テーマページのサイドバーにある「コンポーネント」リンクをクリックします。次に、サイドバーの下部にある「インストール」ボタンをクリックします。

開いたモーダルウィンドウで、「新規作成」リンクをクリックします。

テーマコンポーネントに名前を付け、「コンポーネント」タイプが選択されていることを確認します。次に、「作成」ボタンをクリックします。

次に、テーマコンポーネントのメインページに移動します。

テーマコンポーネントにコードを追加する

メインロゴのデフォルトの URL をオーバーライドするコードは、テーマコンポーネントの HEAD セクションに追加する必要があります。コンポーネントのエディタにアクセスするには、「CSS/HTML の編集」ボタンをクリックします。

開いたエディタで、「Head」リンクをクリックします。

さまざまな条件に応じて、次のコードスニペットをエディタの HEAD セクションに追加して、ホームページのロゴが指す URL を変更します。コード内の https://example.com を外部サイトのホームページの完全な URL に置き換える必要があることに注意してください。

  • 静的 URL にリンクを変更するには:
<script type="text/discourse-plugin" version="1.3.0">
    api.registerValueTransformer("home-logo-href", () => "https://example.com")
</script>
  • 現在のユーザーに基づいて動的な URL を返すには:
<script type="text/discourse-plugin" version="1.3.0">
    api.registerValueTransformer("home-logo-href", () => {
      const currentUser = api.getCurrentUser();
      return `https://example.com/${currentUser.username}`;
    })
</script>
  • テーマコンポーネントの設定に基づいて URL を返すには:
<script type="text/discourse-plugin" version="1.3.0">
    api.registerValueTransformer("home-logo-href", () => {
      return settings.example_logo_url_setting;
    })
</script>

「保存」ボタンをクリックして変更を保存します。その後、テーマコンポーネントのメインページに戻り、「すべてのテーマに追加」リンクをクリックして、新しいコンポーネントをサイトのすべてのテーマに追加します。

「いいね!」 11

: +1: 共有いただきありがとうございます!


ヘッダータグに追加しましたが、効果がありませんでした

私にとっては完璧に動作します。
サイトで Ctrl + F5 を使用して「ハードリフレッシュ」を行いましたか?


Command+R を試しましたが、シークレットモードをオンにしても、まだ機能しませんでした

「いいね!」 1

このハウツーを共有していただきありがとうございます!コミュニティのメインヘッダーロゴを変更する必要があり、コードスニペットを使用すると完璧に機能します。

しかし、トピックタイトルがヘッダーに表示されるときに、フルロゴを置き換える小さなロゴのリンクも変更されることに気づきました。たとえば、メタのアイコンのみです。

image

これは非常に直感的ではないように感じます。small-logoに影響しないように、関数にさらに引数を追加することは可能ですか?

Upcoming Header Changes - Preparing Themes and Plugins のため、これは以下のように変更する必要があると思います。

<script type="text/discourse-plugin" version="1.34.0">
    api.registerValueTransformer("home-logo-href", () => "<full_url_of_your_website_homepage>");
</script>
「いいね!」 2