Auto-enlazar palabras

Probablemente porque la gente no lo sabe. Me remitieron a esta publicación buscando una solución para enlazar palabras de búsqueda a temas y mi reacción predeterminada fue instalar este componente. Ni siquiera me di cuenta de que existían las palabras observadas. Es genial cuánto aprendo sobre Discourse cada vez que intento optimizarlo.

Si estás de acuerdo, editaré la primera publicación para informar a la gente que existen las palabras observadas y que pueden ser una solución lista para usar. Además, este tema está marcado como oficial, por lo que si es un duplicado de palabras observadas, quizás considera depreciarlo o indicarlo en la primera publicación.

1 me gusta

Tengo una solicitud de funcionalidad. Sería maravilloso si esto solo se aplicara al texto del cuerpo y no a los encabezados, se ve tonto cuando una palabra en un encabezado está enlazada:

A veces, hay demasiadas palabras iguales para convertir en enlaces en contenido largo.
Creo que sería mejor mostrar solo la primera en el contenido. Las otras podrían estar en negrita, en lugar de enlaces.

2 Me gusta

Parece que deberías poder hacer eso agregando h1, h2 y otros a la configuración de “etiquetas excluidas” en la extensión, ¿no?

Gracias Matt, creo que te refieres a clases excluidas, que de alguna manera no noté antes, pero desafortunadamente estas no funcionan, así que supongo que esto es un informe de error en lugar de una solicitud de función.

La captura de pantalla que publiqué anteriormente es un h2 con la clase de ancla.

No, me refería a las etiquetas. Esas son etiquetas HTML, no etiquetas de tema de Discourse, según entiendo.

¡De hecho, tienes razón! Gracias Matt. Estaba demasiado centrado en que las etiquetas fueran etiquetas de discurso. Agradezco tu ayuda.

1 me gusta

¿Puede decirme si es posible importar varias palabras para crear enlaces a la vez o usar la API para conectarse a un archivo de administración en Google Sheets? Tengo una idea sobre el uso de este TC para administrar y crear varios glosarios.

Encuentro este componente temático interesante y útil, pero enlaza palabras clave demasiadas veces. Adjuntarlo correctamente solo es adjuntar la primera palabra para reducir el spam.

Envié una imagen adjunta y se repite 3 veces para 1 palabra clave. Espero que esta parte se corrija en la próxima actualización.

3 Me gusta

¡Hola! ¡Gracias por el gran plugin!

Pregunta rápida: ¿todavía puede encontrar palabras aunque no tengan espacios antes o después? Recuerdo que solía encontrarlas sin necesidad de espacios alrededor de la palabra.

2 Me gusta

Hola, ¿hay alguna forma de establecer enlaces en target=“_self”? Por defecto, todos se abren en una nueva pestaña (target=“_blank”), pero no pude encontrar ninguna configuración para cambiar esto.

Muchas gracias.

https://meta.discourse.org/my/preferences/interface

y busca Abrir todos los enlaces externos en una nueva pestaña. Está desactivado por defecto porque es la mejor práctica. Puedes usar /admin/site_settings/category/all_results?filter=external%20links para cambiar el valor predeterminado para todos los usuarios.

1 me gusta

La preferencia funciona para enlaces normales en la publicación, pero para mí, los creados por este componente siempre se abren en una nueva pestaña. ¿La preferencia cambia el comportamiento de los enlaces creados por este componente para ti? Me pregunto qué me estoy perdiendo.

1 me gusta

Vaya. Lo siento. No me di cuenta. Tienes razón. Está codificado para abrir en blanco:

Me parece una solicitud de función razonable.

Espera. Realmente no estaba prestando atención. Si va a haber una opción codificada, que ignore las preferencias del usuario, debería ser para abrir en la misma ventana. Esa es la mejor práctica. Y si los enlaces creados por linkify van a Discourse y no a un sitio externo, entonces es un comportamiento aún más inesperado que se abran en una nueva pestaña.

3 Me gusta

He intentado solucionarlo con JavaScript (código a continuación), pero solo funciona ocasionalmente. Creo que Ember.js podría estar interfiriendo. Así que no es ideal

<script>
	window.addEventListener("load", function() {
		document.querySelectorAll("a.linkify-word.no-track-link").forEach(function(link) {
			link.removeAttribute("target");
		});
	});
</script>

Una mejor solución sería bifurcar el componente temático y/o enviar una PR.

1 me gusta

No sé qué valor tiene, pero le pedí a ChatGPT una forma de agregar una casilla de verificación en el backend para alternar entre target="_self" y target="_blank". Esto es lo que sugirió:

Código para settings.yaml:

self_target:
  type: bool
  default: false
  client: true

Código para initialize-discourse-linkify.js:

  let createLink = function (text, url) {
	let link = document.createElement("a");
	link.innerHTML = text;
	link.href = url;
	link.rel = "nofollow";
	link.target = settings.self_target ? "_self" : "_blank"; // Usa la configuración del administrador aquí
	link.className = "linkify-word no-track-link";
	return link;
  };

¿Crees que esto podría funcionar?