Configurar un enlace de barra lateral personalizado para abrir en una nueva pestaña

¿Es posible hacer que un enlace de sección personalizado se abra en _blank para que se abra en una nueva pestaña? Hay muchos componentes temáticos que también brindan esta capacidad.

3 Me gusta

En algún momento discutimos si los enlaces externos en la barra lateral deberían abrirse en una nueva pestaña, pero decidimos respetar la preferencia del usuario.

¿Puedes compartir uno o dos casos de tu propio sitio en los que sientas que sería mejor anular esa preferencia del usuario y forzar que el enlace se abra en una nueva pestaña?

2 Me gusta

Claro. Quizás nuestro enfoque es simplemente diferente. Creo sinceramente que si el enlace es externo, es mucho más educado redirigir el navegador del usuario a una pestaña separada. Eso evita que interrumpan la experiencia que tienen/tenían mientras están en las páginas del foro.

Nuestro foro está muy activo, no estoy seguro de que esté bien que un usuario sea interrumpido al abandonar el sitio web por completo al seguir el enlace. El enlace lleva a nuestro canal de Telegram, si este es el caso.

Al final, no propongo que los enlaces externos se abran en _blank por defecto. Sugiero que des a los administradores de Discourse la capacidad de controlar cómo se abren los enlaces desde este componente/característica de configuración específica.

3 Me gusta

Solución temporal: Si haces clic derecho en un elemento, obtienes la opción de abrirlo en una nueva pestaña.

De acuerdo, tu progreso nunca se interrumpiría cuando los enlaces se abren en una nueva pestaña.

Estoy de acuerdo con esto. Al igual que en el escenario anterior con un canal de Telegram, claramente habrá casos en los que anular las preferencias del usuario sea ideal para enlaces personalizados creados por el administrador. En los componentes de temas, a menudo apuntamos a _blank, así que no estoy seguro de por qué esta opción no puede estar aquí como parte del modal de configuración de la barra lateral personalizada (a menos que sea un problema de espacio y no haya lugar allí). De hecho, también tengo enlaces en la barra lateral personalizados por el administrador en mi foro, donde estaría inclinado a anular la configuración del usuario para los enlaces.

2 Me gusta

¿Crees que si el usuario ha expresado la preferencia de que los enlaces se abran en la misma ventana, es más educado no hacer lo que han indicado expresamente?

Las personas que utilizan lectores de pantalla son las más inconvenientes por abrir cosas en nuevas pestañas cuando no lo esperan. Por eso, generalmente se recomienda no secuestrar enlaces a una nueva pestaña (aunque sea lo que tú y yo preferimos).

Puedes cambiar la preferencia predeterminada del usuario para que se abra en una nueva pestaña, y también aplicar esa configuración a todos los usuarios. Eso permitirá que tu sitio sea más educado sin violar las preferencias del usuario.

4 Me gusta

este es un muy buen punto.

5 Me gusta

Como alguien que realmente usa un lector de pantalla (y todos los problemas divertidos que algunos componentes de temas crean para ellos) puedo confirmar, en general es una mala idea forzar nuevas pestañas.

5 Me gusta

¿Cómo puedo deshabilitar la barra lateral para que no abra un enlace personalizado a un sitio web hermano en una nueva pestaña? Dado que el otro sitio web también tiene un enlace para regresar a Discourse. Actualmente, esto resulta en una serie de pestañas no deseadas.

Preferiría que ese enlace externo se abriera en _self.

Gracias.

1 me gusta

Generalmente, todos los enlaces deben abrirse en _self. Un usuario pregunta cuándo y cuáles deben abrirse en una nueva pestaña o ventana.

1 me gusta

En administrador - configuración, asegúrate de que lo siguiente esté deshabilitado:

Ten en cuenta que los usuarios que hayan iniciado sesión pueden anular la configuración del administrador en sus preferencias de usuario, en la pestaña de interfaz:

2 Me gusta

Creo que la pregunta era cómo configurar esto para un enlace específico al sitio, que tiene un enlace de regreso al foro. Cambiar la configuración del administrador cambiaría el comportamiento de todos los enlaces, ¿no es así?

2 Me gusta

hmmm, podría ser. ¿Quieren anular la configuración del usuario? Esas son las únicas configuraciones que conozco que afectan a los enlaces en pestañas/ventanas separadas.

1 me gusta

Sí, no quiero deshabilitar target="_blank" globalmente para sitios externos. Solo quiero deshabilitarlo para este elemento de menú individual.

Gracias por la explicación.

2 Me gusta

Custom Header Links te permite elegir el destino de los enlaces que añade. Quizás esto ayude

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

3 Me gusta

Gracias. ¿Así que uso esto para la barra lateral?

1 me gusta

Es una pista. Es lo mejor que tengo. Siendo sincero, no estoy seguro de modificar la barra lateral.

Parece que todavía no hay puntos de conexión de complementos en la barra lateral (¿?!), por lo que podría requerir algo de JavaScript ingenioso para encontrar lo que quieres modificar. Algo como esto, quizás.

3 Me gusta

Esto es intencional, idealmente la barra lateral debería extenderse usando la API… esto nos ayuda a mantener cualquier enlace/sección personalizada agregada aquí.

En este momento, parece que los destinos de los enlaces externos son todo o nada según la configuración del usuario external_links_in_new_tab… por lo que incluso con una sección/enlace personalizado agregado a través de la API, no hay un método para cambiar el destino de un enlace específico. Sería posible agregar esta opción… aunque históricamente tendemos a inclinarnos por respetar la preferencia del usuario sobre cómo se abren los enlaces.

4 Me gusta

Eso lo explica. Supongo que me perdí ese comunicado. Pero si miro un poco más de cerca, veo addSidebarPanel y addSidebarSection en plugin-api.js, pero solo este último aparece en una publicación, y está lejos de ser un #cómo-hacer. Pero aquí hay algo:

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

4 Me gusta