Auto-Linkify Palavras

Tenho o Linkify funcionando quase exatamente como eu quero:

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

Isso cobre os “números TBI” inseridos pelos usuários em muitas formas diferentes:

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

Gosto dessa flexibilidade.

Infelizmente, ele não lida com a forma canônica de inserir esses números:

  • TBI #17

Parece que nada que eu faça conseguirá corresponder corretamente ao # (hashtag, hash, sinal de número, octothorpe, marca de hash, sinal de libra, símbolo de jogo da velha). Já tentei

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

obviamente, e não funcionaram; mas nem mesmo um curinga completo funciona:

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

Parece que a funcionalidade de pop-up de categorias pode estar assumindo isso e não permitindo que o Linkify realize sua correspondência — mesmo quando o usuário não escolhe uma das categorias oferecidas.

Esse é o comportamento esperado ou um bug? Alguém sabe de uma maneira de contornar isso?

Sim, se você inspecionar o código-fonte HTML, o Discourse parece colocar qualquer coisa precedida por hashtag em um elemento span separado, o que quebra o fluxo do tema linkify. Não acho que haja uma solução fácil para isso, desculpe. :frowning: Você precisaria fazer um fork do tema e personalizá-lo especificamente para este caso, receio, a menos que alguém tenha uma ideia melhor.

Esse plug funciona bem, obrigado. No entanto, em combinação com o abrify, não funciona.
É possível que o link funcione também com a classe que ele adiciona com este plugin:
GitHub - metabrainz/discourse-abbrify-words: Discourse theme component for automatically adding <abbr> to abbreviations and acronyms · GitHub.

Acho que o problema é que o plugin abbrify ignora as tags de link por padrão. Você pode tentar corrigir isso modificando o código e excluindo a linha 16 em head_tag.html

'a': 1,

Me avise se funcionou ou se precisar de mais orientações. :slightly_smiling_face:

2 curtidas

Parece que está funcionando, muito obrigado.

A propósito, faz alguma diferença se ele editar apenas no template CSS/HTML em vez de diretamente no GitHub?

Sim, você precisa ter cuidado ao atualizar o componente do tema a partir do GitHub, pois ele substituirá suas alterações locais no CSS/HTML.

3 curtidas

Obrigado. Eu me pergunto se é possível fazer o mesmo, mas adicionar uma classe diferente em vez do atributo abriffy, por exemplo, dfn data-info ou span aria-label ou outro desse tipo

por exemplo, para brincar com o conteúdo: attr()

Sim, com certeza. Você pode tentar brincar com a função createAbbr (ou com a função correspondente no tema linkify)

1 curtida

Muito bom. Tenho que experimentá-lo um pouco.
Acho que pode haver muitas possibilidades aqui. Você tem alguma ideia de como usar JSON e API de alguma forma?

Por exemplo, para exibir palavras do Abriefy e outros dados no WordPress por meio da API?

Não tenho certeza do que você quer dizer. Poderia ser mais específico sobre o que está tentando alcançar? Os componentes do tema rodam no Discourse; não há uma API para usá-los em outro lugar. No entanto, na maioria dos casos, você deve conseguir usar o código JavaScript simplesmente copiando-o para outro lugar e modificando as partes específicas do Discourse.

Existe alguma maneira de excluir o conteúdo em oneboxes de ser convertido em links?

1 curtida

Você pode tentar adicionar a tag <aside> nas configurações de tags ignoradas. Embora eu não tenha certeza de que todos os oneboxes estejam dentro do <aside>. Talvez precisemos de um filtro baseado no nome da classe,

@sam, o que você acha disso? :arrow_double_up: Isso pareceria um comportamento padrão razoável (não criar links automáticos em oneboxes).

4 curtidas

A configuração de filtro baseada em classes parece perfeita; por padrão, devemos excluir uma caixa.

7 curtidas

Certo, vou tentar enviar uma PR na próxima semana.

2 curtidas

Olá, instalei com sucesso este componente de tema para o meu tema padrão Light hoje. No entanto, ele não está funcionando para mim.

Tentei usar regex e as palavras linkificadas padrão (discourse e meta). Nenhum dos dois funcionou.

Tenho instalado a versão v2.3.0.beta2 +256. Alguma dica para depurar isso, por favor? Obrigado desde já :slight_smile:

1 curtida

Realizamos uma refatoração de código recentemente e é possível que você precise atualizar seu Discourse (o que é conveniente, já que a versão 2.4 acabou de ser lançada :slightly_smiling_face:)

6 curtidas

O Linkify nas oneboxes agora deve estar desativado por padrão. @jrgong, você poderia atualizar seu tema e testar?

1 curtida

Parece que isso ainda não foi resolvido? Eu achei que poderia criar um backup exportando o componente pela interface de administração, mas a exportação não inclui as configurações personalizadas.

Uma ideia: e se a configuração, com todas as suas linhas, se transformasse em uma área de texto editável ao ser clicada duas vezes? Algo semelhante aos editores Editar CSS/HTML? Isso facilitaria muito o backup/exportação, além de permitir importar uma lista de itens com um item por linha.

Antes:

Ao clicar duas vezes:

Mudando de assunto: você pode ver algumas Regex estranhas ali, mas não é possível usar | nesses campos de configuração. Talvez isso também pudesse ser resolvido com a proposta acima.

3 curtidas

Olá novamente, meu amigo! Como você acha que seria transformar palavras ou links (usando o plugin linkify/abrify) em imagem(s)?

Provavelmente não é possível com o plugin atual, mas não deve ser difícil modificar o plugin para gerar tags <img> em vez de <a>.

1 curtida