Eine von mir häufig besuchte Website hat eine Anpassung auf der Benutzerkarte, die einen Link zu einer externen Website enthält, die für jeden Benutzer spezifisch ist (im Grunde ein Benutzerprofil). Wenn ich jedoch auf diesen Link klicke, wird die Seite im aktuellen Tab geöffnet, obwohl ich die Einstellung „Alle externen Links in einem neuen Tab öffnen“ aktiviert habe. Gibt es eine Möglichkeit für den Administrator, die Einstellung eines Benutzers „Alle externen Links in einem neuen Tab öffnen“ zu referenzieren, damit diese berücksichtigt wird?
Kennen Sie das Thema/die Komponente? Ich denke, dort wäre der richtige Ort, um es anzusprechen, vielleicht kann es aktualisiert werden, um die Website-Einstellung zu berücksichtigen. ![]()
Ich ging davon aus, dass es nur eine Sonderanfertigung war, aber ich kann das beim Administrator überprüfen.
Es scheint, als hätte der Administrator ein benutzerdefiniertes Feld für den externen Profil-Link des Benutzers und dann ein benutzerdefiniertes Theme erstellt. Sie folgten den Anweisungen von (Retired) Use an ID in a custom user field to link to a user's external profile. Sollte ich dort einfach fragen, wie man die Benutzereinstellung zum Öffnen in einem neuen Tab nutzt?
Ich denke, es hängt davon ab, ob Sie möchten, dass es die Einstellung verwendet; die Anpassung berücksichtigt sie nicht, obwohl es so aussieht, als würde sie das target entsprechend hinzufügen:
Wenn target='_blank' enthalten ist, wird es unabhängig von der Website-Einstellung in einem neuen Tab/Fenster geöffnet, da sie nicht interagieren.
Auf der Website, auf der die Links nicht in neuen Tabs geöffnet werden, enthalten die Links, wenn Sie den Quellcode überprüfen, diesen target-Wert?
Wenn sie die Website-Einstellung überprüfen wollten, könnten sie etwas Ähnliches innerhalb dieser bestehenden Anpassung tun
// Richten Sie die siteSettings- und target-Variable ein:
const siteSettings = api.container.lookup('site-settings:main');
const target = siteSettings.default_other_external_links_in_new_tab ? "_blank" : ""
// Ändern Sie die if-Anweisung, in der der Link erstellt wird, um die target-Variable zu verwenden:
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;
}
Gibt es eine Möglichkeit, die Benutzereinstellung zu überprüfen? Soweit ich weiß, ist die Website-Einstellung nur der Standard für neue Benutzer, aber idealerweise würde dieser Link Änderungen berücksichtigen, die Benutzer an ihren eigenen Einstellungen vorgenommen haben. Ein Benutzer möchte vielleicht, dass er sich im selben Tab öffnet, während ein anderer Benutzer ihn in einem neuen Tab öffnen möchte.
Ach ja, ich habe den “user”-Teil übersehen
Entschuldigung
Es ist nicht viel anders, die Benutzereinstellung zu verwenden. Sie müssten nur die ersten beiden Konstanten ändern, um auf den Benutzer zu verweisen:
// Richten Sie die Benutzer- und Zielvariable ein:
const user = api.getCurrentUser()
const target = user?.user_option?.external_links_in_new_tab ? "_blank" : ""
und dann wäre alles andere gleich.
Wenn dies mehr wie der Kern funktionieren würde, würden wir prüfen, ob der Benutzer existiert, und wenn nicht, auf die Website-Einstellung zurückgreifen:
// Richten Sie die Benutzer-, SiteSettings- und Zielvariable ein:
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) { // Wenn der Benutzer existiert, setzen Sie das Ziel basierend auf der Benutzeroption
target = user.user_option?.external_links_in_new_tab ? "_blank" : ""
}
// Ändern Sie die if-Anweisung, in der der Link erstellt wird, um die Zielvariable zu verwenden:
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;
}
Perfekt funktioniert, danke!
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.