Un sitio que frecuento tiene una personalización en la tarjeta de usuario que incluye un enlace a un sitio externo específico para cada usuario (básicamente, un perfil de usuario). Sin embargo, al hacer clic en este enlace, la página se abre en la pestaña actual, a pesar de que tengo habilitada la configuración “Abrir todos los enlaces externos en una nueva pestaña”. ¿Hay alguna forma para que el administrador haga referencia a la configuración de “Abrir todos los enlaces externos en una nueva pestaña” de un usuario para que se respete?
¿Sabes qué tema/componente es? Creo que sería el lugar para mencionarlo, tal vez se pueda actualizar para tener en cuenta la configuración del sitio. ![]()
Asumí que estaba hecho a medida, pero puedo consultarlo con el administrador.
Parece que el administrador tiene un campo de usuario personalizado para el enlace del perfil externo del usuario y luego creó un tema personalizado. Siguieron las instrucciones de (Retired) Use an ID in a custom user field to link to a user's external profile. ¿Debería preguntar allí cómo utilizar la configuración del usuario sobre abrir en una nueva pestaña?
Creo que depende de si quieres que utilice la configuración; la personalización no la tiene en cuenta, aunque parece que añade el target apropiadamente:
Incluir target='_blank' abrirá en una nueva pestaña/ventana independientemente de la configuración del sitio, ya que no interactúan.
En el sitio donde los enlaces no se abren en nuevas pestañas, cuando revisas el código fuente, ¿los enlaces contienen ese valor target?
Si quisieran verificar la configuración del sitio, podrían hacer algo como esto dentro de esa personalización existente
// configurar las variables siteSettings y target:
const siteSettings = api.container.lookup('site-settings:main');
const target = siteSettings.default_other_external_links_in_new_tab ? "_blank" : ""
// modificar la declaración if donde se crea el enlace para usar 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;
}
¿Hay alguna forma de comprobar la configuración del usuario? Entiendo que la configuración del sitio es solo el valor predeterminado para los nuevos usuarios, pero idealmente este enlace respetaría los cambios que los usuarios hayan realizado en su propia configuración. A un usuario podría gustarle que se abra en la misma pestaña, mientras que a otro usuario podría gustarle que se abra en una nueva pestaña.
Ah, claro, pasé por alto la parte de “usuario”
lo siento
No es muy diferente usar la configuración del usuario, solo tendrías que cambiar las dos primeras constantes para que hagan referencia al usuario:
// configurar las variables de usuario y destino:
const user = api.getCurrentUser()
const target = user?.user_option?.external_links_in_new_tab ? "_blank" : ""
y luego todo lo demás sería igual.
Si esto funcionara más como el núcleo, verificaríamos si el usuario existe y, si no, recurriríamos a la configuración del sitio:
// configurar las variables de usuario, siteSettings y destino:
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 el usuario existe, establecer el destino según la opción del usuario
target = user.user_option?.external_links_in_new_tab ? "_blank" : ""
}
// modificar la declaración if donde se crea el enlace para usar la variable de destino:
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;
}
¡Funcionó perfectamente, gracias!
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.