サイトカスタマイズで「外部リンクをすべて新しいタブで開く」設定を活用する方法

私がよく利用するサイトでは、ユーザーカードにカスタマイズがあり、各ユーザー固有の外部サイトへのリンク(基本的にユーザープロフィール)が含まれています。しかし、「すべての外部リンクを新しいタブで開く」設定を有効にしているにもかかわらず、このリンクをクリックすると現在のタブでページが開いてしまいます。管理者は、この設定を尊重するように、ユーザーの「すべての外部リンクを新しいタブで開く」設定を参照する方法はありますか?

「いいね!」 1

それがどのテーマ/コンポーネントか分かりますか?そこに提起するのが良いと思います。サイトの設定を考慮するように更新できるかもしれません。:slight_smile:

カスタムビルドだと思っていましたが、管理者に確認できます。

管理者は、ユーザーの外部プロフィールリンク用のカスタムユーザーフィールドを持ち、カスタムテーマを構築したようです。彼らは (Retired) Use an ID in a custom user field to link to a user's external profile の指示に従いました。新しいタブで開くユーザー設定の利用方法について、そこで尋ねるべきでしょうか?

設定を利用したいかどうかによると思います。カスタマイズでは考慮されていませんが、target は適切に追加されているように見えます。

target='_blank' を含めると、サイトの設定に関係なく新しいタブ/ウィンドウで開かれます。それらは相互作用しないためです。

新しいタブでリンクが開かないサイトで、ソースを確認したときに、リンクにその target 値が含まれていますか?

「いいね!」 2

サイトの設定を確認したい場合、既存のカスタマイズ内で次のようなことを行うことができます。

// siteSettings と target 変数を設定します。
const siteSettings = api.container.lookup('site-settings:main');
const target = siteSettings.default_other_external_links_in_new_tab ? "_blank" : ""


// リンクが作成される if 文を変更して、target 変数を使用します。
if (userFields && userFields[userFieldId]) {
  const url = "http://myawesomewebsite.com/user/" + userFields[userFieldId];
  const link = `<a href="${url}" target="${target}">${url}</a>`;
  return Ember.Object.create({ link, name: externalUserIdField.get('name') });
} else {
  return null;
}
「いいね!」 1

ユーザー設定を確認する方法はありますか?サイト設定は新規ユーザーのデフォルトにすぎないと思いますが、理想的にはこのリンクはユーザーが自身の設定に行った変更を尊重するはずです。あるユーザーは同じタブで開きたいかもしれませんが、別のユーザーは新しいタブで開きたいかもしれません。

「いいね!」 1

ああ、そうですね。「ユーザー」の部分を見落としていました :sweat_smile: すみません。

ユーザー設定を使用するのと大差ありません。ユーザーを参照するように最初の2つの定数を変更するだけです。

// ユーザーとターゲット変数を設定します。
const user = api.getCurrentUser()
const target = user?.user_option?.external_links_in_new_tab ? "_blank" : ""

そして、他のすべては同じになります。

これがコアのように機能する場合、ユーザーが存在するかどうかを確認し、存在しない場合はサイト設定にフォールバックします。

// ユーザー、siteSettings、およびターゲット変数を設定します。
const user = api.getCurrentUser()
const siteSettings = api.container.lookup('site-settings:main');
let target = siteSettings.default_other_external_links_in_new_tab ? "_blank" : "";

if (user) { // ユーザーが存在する場合、ターゲットをユーザーオプションに基づいて設定します
  target = user.user_option?.external_links_in_new_tab ? "_blank" : ""
}

// リンクが作成されるifステートメントを変更して、ターゲット変数を使用します。
if (userFields && userFields[userFieldId]) {
  const url = "http://myawesomewebsite.com/user/" + userFields[userFieldId];
  const link = `<a href="${url}" target="${target}">${url}</a>`;
  return Ember.Object.create({ link, name: externalUserIdField.get('name') });
} else {
  return null;
}
「いいね!」 2

完璧に動作しました、ありがとうございます!

「いいね!」 2

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