Auto-enlazar palabras

Tengo Linkify funcionando casi exactamente como quiero:

/TBI\s*\W?(\d*)/,https://tbi.example.com/tbi/$1/

Esto cubre los “números TBI” ingresados por los usuarios en muchas formas diferentes:

  • TBI 17
  • TBI-17
  • TBI17
  • TBI -17
  • TBI*17
  • etc.

Me gusta esta flexibilidad.

Desafortunadamente, no maneja la forma canónica de ingresar estos números:

  • TBI #17

Parece que nada de lo que pueda hacer coincidirá correctamente con el # (hashtag, almohadilla, signo numeral, octotopo, marca de hash, signo de libra, símbolo de tres en raya). He probado

/TBI\s*#?(\d*)/,https://tbi.example.com/tbi/$1/
/TBI\s*\#?(\d*)/,https://tbi.example.com/tbi/$1/

por supuesto, y no funcionan; pero ni siquiera un comodín completo funciona:

/TBI\s*.?(\d*)/,https://tbi.example.com/tbi/$1/

Parece que la funcionalidad emergente de categorías podría estar interfiriendo y no permitiendo que Linkify realice su trabajo de coincidencia, incluso cuando el usuario no elige una de las categorías ofrecidas.

¿Es este un comportamiento esperado o un error? ¿Alguien conoce alguna forma de solucionarlo?

Sí, si inspeccionas el código fuente HTML, Discourse parece colocar cualquier cosa precedida por el símbolo de almohadilla (#) en un elemento separado, lo que interrumpe el flujo del tema linkify. No creo que haya una solución sencilla para esto, lo siento. :frowning: Teme que tengas que bifurcar el tema y personalizarlo específicamente para este caso, a menos que alguien tenga una mejor idea.

Este complemento funciona bien, gracias. Sin embargo, en combinación con abrify no funciona. ¿Es posible que el enlace también funcione con la clase que añade este plugin: GitHub - metabrainz/discourse-abbrify-words: Discourse theme component for automatically adding <abbr> to abbreviations and acronyms · GitHub.

Creo que el problema es que el plugin abbrify omite las etiquetas de enlace de forma predeterminada. Puedes intentar solucionarlo modificando el código, eliminando la línea 16 en head_tag.html

'a': 1,

Avísame si funcionó o si necesitas más orientación. :slightly_smiling_face:

2 Me gusta

Parece que está funcionando, muchas gracias.

Por cierto, ¿hay alguna diferencia si se edita solo en la plantilla de CSS/HTML en lugar de hacerlo directamente desde GitHub?

Sí, debes tener cuidado al actualizar el componente del tema desde GitHub, ya que sobrescribirá tus cambios locales en CSS/HTML.

3 Me gusta

Gracias, me pregunto si es posible hacer lo mismo, pero agregar una clase diferente en lugar del atributo abriffy, por ejemplo, dfn data-info o span aria-label u otro de este tipo

por ejemplo, para jugar con el contenido: attr()

Sí, definitivamente. Puedes probar jugando con la función createAbbr (o con la función correspondiente en el tema linkify)

1 me gusta

Muy bueno. Tengo que probarlo un poco.
Supongo que aquí puede haber muchas posibilidades. ¿Tienes alguna idea de cómo usar JSON y la API de alguna manera?

Por ejemplo, para poder mostrar palabras de Abriffy y otros datos en WordPress a través de la API?

No estoy seguro de a qué te refieres. ¿Podrías ser más concreto sobre lo que intentas lograr? Los componentes de tema se ejecutan en Discourse; no existe una API para usarlos en otros lugares. Sin embargo, en la mayoría de los casos, deberías poder usar el código JS simplemente copiándolo a otro lugar y modificando las partes específicas de Discourse.

¿Hay alguna manera de excluir el contenido en oneboxes de que se convierta en enlace?

1 me gusta

Puedes intentar agregar la etiqueta <aside> en la configuración de etiquetas omitidas. Aunque no estoy seguro de que todos los oneboxes estén dentro de la etiqueta <aside>. Quizás necesitemos un filtro basado en el nombre de la clase,

@sam, ¿qué opinas de esto? :arrow_double_up: Esto parecería un comportamiento predeterminado razonable (no autolink en oneboxes).

4 Me gusta

La configuración de filtro basada en clases suena perfecta; por defecto, deberíamos excluir un cuadro.

7 Me gusta

Vale, intentaré enviar un PR la próxima semana.

2 Me gusta

Hola, hoy he instalado correctamente este componente de tema para mi tema predeterminado Light. Sin embargo, no funciona para mí.

He probado con expresiones regulares y con las palabras de enlace predeterminadas (discourse y meta). Ninguna ha tenido éxito.

Tengo instalada la versión v2.3.0.beta2 +256. ¿Tienen algún consejo para depurar esto? Gracias de antemano :slight_smile:

1 me gusta

Hemos realizado una refactorización del código recientemente y es posible que debas actualizar tu Discourse (lo cual es conveniente de todos modos, ya que acaba de lanzarse la versión 2.4 :slightly_smiling_face:)

6 Me gusta

Linkify en oneboxes ahora debería estar deshabilitado de forma predeterminada. @jrgong ¿Podrías actualizar tu tema y probarlo?

1 me gusta

Parece que esto aún no se ha resuelto. Pensé que podría crear una copia de seguridad exportando el componente desde la interfaz de administración, pero la exportación no incluye la configuración personalizada.

Una idea: ¿y si la configuración con todas sus filas se convierte en un área de texto editable al hacer doble clic? Algo similar a los editores Editar CSS/HTML. Eso facilitaría la copia de seguridad y la exportación, así como la importación de una lista de elementos con un elemento por línea.

Antes:

Al hacer doble clic:

Por otro lado: es posible que veas algunas expresiones regulares extrañas allí, pero no se puede usar | en estos campos de configuración. Quizás eso también se podría solucionar con la propuesta anterior.

3 Me gusta

¡Hola de nuevo, amigo! ¿Qué te parece convertir palabras/enlaces en imagen(es) usando el plugin linkify/abrify?

Probablemente no sea posible con el plugin actual, pero no debería ser difícil modificarlo para que genere etiquetas <img> en lugar de <a>.

1 me gusta