カスタムサイドバーリンクを新しいタブで開くように設定する

カスタムセクションリンクを新しいタブで開くために _blank にすることは可能ですか?多くのテーマコンポーネントもこの機能を提供しています。

「いいね!」 3

サイドバーの外部リンクを新しいタブで開くかどうかについては、以前議論したことがありますが、ユーザーの好みを尊重することにしました。

ご自身のサイトで、ユーザーの好みを上書きしてリンクを新しいタブで強制的に開いた方が良いと思われる事例を1つか2つ教えていただけますか?

「いいね!」 2

確かに。アプローチが違うだけかもしれません。リンクが外部リンクである場合、ユーザーのブラウザを別のタブに転送する方がはるかに丁寧だと心から信じています。これにより、フォーラムのページで体験していることや体験していたことを中断させることがなくなります。

私たちのフォーラムは非常に活発であり、ユーザーがリンクをたどってウェブサイトを完全に離れることで中断されることが問題ないかどうかはわかりません。この場合、リンクは私たちのTelegramチャンネルにつながります。

結局のところ、外部リンクをデフォルトで _blank で開くことを提案しているわけではありません。Discourse管理者に、この特定のコンポーネント/構成機能からリンクがどのように開くかを制御する機能を与えることを提案しています。

「いいね!」 3

一時的な解決策: アイテムを右クリックすると、新しいタブで開くオプションが表示されます。

リンクが新しいタブで開かれる場合、進捗が中断されることは決してありません。同意します。

これには同意します。上記の Telegram チャネルのシナリオのように、管理者が作成したカスタムリンクでユーザー設定をオーバーライドすることが理想的な場合があります。テーマコンポーネントでは _blank を頻繁にターゲットにしているので、このオプションがカスタムサイドバー構成モーダルの一部としてなぜ存在しないのか分かりません(スペースがなく、そこに収まらないという場合を除いて)。

実際、私のフォーラムにも管理者がカスタマイズしたサイドバーリンクがあり、リンクのユーザー設定をオーバーライドしたいと考えています。

「いいね!」 2

ユーザーが同じウィンドウでリンクを開くことを好むと表明した場合、彼らが明確に示したこととは異なることを行う方が丁寧だとお考えですか?

スクリーンリーダーを使用しているユーザーは、予期せず新しいタブで開かれた場合に最も不便を感じます。そのため、通常はリンクを新しいタブにハイジャックしないことが推奨されています(あなたや私が好むことですが)。

ユーザーのデフォルト設定を新しいタブで開くように変更し、その設定をすべてのユーザーに適用できます。これにより、ユーザーの設定を侵害することなく、サイトをより丁寧にすることができます。

「いいね!」 4

これは非常に良い点です。

「いいね!」 5

実際にスクリーンリーダーを使用している者(そして、テーマコンポーネントがそれらに対して引き起こす多くの問題も経験しています)として、新しいタブを強制することは一般的に悪い考えであることを確認できます。

「いいね!」 5

サイドバーから姉妹ウェブサイトへのカスタムリンクを新しいタブで開くのを無効にするにはどうすればよいですか?他のウェブサイトにもDiscourseに戻るリンクがあります。現在、これにより多くの不要なタブが開かれます。

その外部リンクは_selfで開くようにしたいです。

よろしくお願いします。

「いいね!」 1

通常、すべてのリンクは _self に開く必要があります。ユーザーは、いつ、どのリンクを新しいタブまたはウィンドウで開くべきか尋ねています。

「いいね!」 1

管理 - 設定で、以下が無効になっていることを確認してください。

ログインユーザーは、インターフェースタブの下にあるユーザー設定で管理設定を上書きできることに注意してください。

「いいね!」 2

リンク先サイトへのリンクを1つだけ設定する方法についての質問だったと思います。そのサイトにはフォーラムへのリンクも含まれています。管理者の設定を変更すると、すべてのリンクの動作が変わってしまうのではないでしょうか?

「いいね!」 2

うーん、ありえる。ユーザー設定を上書きしたいのでしょうか?リンクを別タブ/ウィンドウで開くことに影響する設定は、それしか知りません。

「いいね!」 1

はい、外部サイトのターゲット _blank をグローバルに無効にしたくありません。この単一のメニュー項目に対してのみ無効にしたいのです。

説明ありがとうございます。

「いいね!」 2

Custom Header Links は、追加するリンクのターゲットを選択できます。これが役立つかもしれません。

https://github.com/discourse/discourse-custom-header-links/blob/main/javascripts/discourse/components/custom-header-links.hbs#L18

「いいね!」 3

はい。サイドバーにはこれを使用しますか?

「いいね!」 1

ヒントです。これが最善です。正直なところ、サイドバーの変更についてはよくわかりません。

サイドバーにはまだプラグインのアウトレットがないようです(!?)、そのため、変更したいものを見つけるには、巧妙なJavaScriptが必要になるかもしれません。おそらくこれのようなものです。

「いいね!」 3

これは意図的なものです。理想的には、APIを使用してサイドバーを拡張する必要があります…これにより、ここに追加されたカスタムリンク/セクションを維持できます。

現在、外部リンクのターゲットは、ユーザー設定 external_links_in_new_tab に基づいてすべてまたはなしになっています…そのため、API経由でカスタムセクション/リンクが追加された場合でも、特定のリンクのターゲットを変更する方法はありません。このオプションを追加することは可能ですが…歴史的には、リンクの開き方に関するユーザーの好みを尊重する傾向があります。

「いいね!」 4

なるほど、そういうことだったんですね。その件については見落としていたようです。しかし、もう少し詳しく見てみると、plugin-api.js の中に addSidebarPaneladdSidebarSection があるのですが、後者だけが投稿にヒットし、それは「ハウツー」とは程遠いものです。しかし、これがあります。

https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse/app/lib/plugin-api.js#L2306-2310

「いいね!」 4