Un site que je fréquente a une personnalisation sur la carte utilisateur qui inclut un lien vers un site externe spécifique à chaque utilisateur (un profil utilisateur en gros). Cependant, cliquer sur ce lien ouvre la page dans l’onglet actuel, bien que j’aie activé le paramètre « Ouvrir tous les liens externes dans un nouvel onglet ». Existe-t-il un moyen pour l’administrateur de référencer le paramètre « Ouvrir tous les liens externes dans un nouvel onglet » d’un utilisateur afin que celui-ci soit respecté ?
Connaissez-vous le thème/composant concerné ? Je pense que ce serait l’endroit idéal pour en discuter, peut-être qu’il pourrait être mis à jour pour tenir compte du paramètre du site. ![]()
J’ai supposé que c’était juste une construction personnalisée, mais je peux vérifier avec l’administrateur.
Il semble que l’administrateur ait un champ utilisateur personnalisé pour le lien de profil externe de l’utilisateur, puis ait créé un thème personnalisé. Ils ont suivi les instructions de (Retired) Use an ID in a custom user field to link to a user's external profile. Dois-je simplement demander là-bas comment utiliser le paramètre utilisateur concernant l’ouverture dans un nouvel onglet ?
Je pense que cela dépend si vous voulez qu’il utilise le paramètre ; la personnalisation ne le prend pas en compte, bien qu’il semble qu’elle ajoute le target de manière appropriée :
Inclure target='_blank' ouvrira dans un nouvel onglet/une nouvelle fenêtre, quel que soit le paramètre du site, puisqu’ils n’interagissent pas.
Sur le site où les liens ne s’ouvrent pas dans de nouveaux onglets, lorsque vous vérifiez la source, les liens contiennent-ils cette valeur target ?
S’ils voulaient vérifier le paramètre du site, ils pourraient faire quelque chose comme ceci dans cette personnalisation existante
// configurer les variables siteSettings et target :
const siteSettings = api.container.lookup('site-settings:main');
const target = siteSettings.default_other_external_links_in_new_tab ? "_blank" : ""
// modifier l'instruction if où le lien est créé pour utiliser la variable 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;
}
Y a-t-il un moyen de vérifier les paramètres de l’utilisateur ? Ma compréhension est que le paramètre du site n’est que la valeur par défaut pour les nouveaux utilisateurs, mais idéalement, ce lien respecterait les modifications que les utilisateurs ont apportées à leurs propres paramètres. Un utilisateur pourrait vouloir qu’il s’ouvre dans le même onglet tandis qu’un autre utilisateur pourrait vouloir qu’il s’ouvre dans un nouvel onglet.
Ah oui, j’avais oublié la partie « utilisateur »
désolé
Ce n’est pas très différent d’utiliser le réglage utilisateur, il suffirait de changer les deux premières constantes pour référencer l’utilisateur :
// configurer la variable utilisateur et cible :
const user = api.getCurrentUser()
const target = user?.user_option?.external_links_in_new_tab ? "_blank" : ""
et ensuite tout le reste serait pareil.
Si cela fonctionnait davantage comme le cœur, nous vérifierions si l’utilisateur existe et, s’il n’existe pas, nous nous rabattrions sur le réglage du site :
// configurer les variables utilisateur, siteSettings et cible :
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) { // si l'utilisateur existe, définir la cible en fonction de l'option utilisateur
target = user.user_option?.external_links_in_new_tab ? "_blank" : ""
}
// modifier l'instruction if où le lien est créé pour utiliser la variable cible :
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;
}
Ça a marché parfaitement, merci !
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.