Auto-Linkify Parole

Linkify funziona quasi esattamente come vorrei:

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

Questo copre i “numeri TBI” inseriti dagli utenti in molte forme diverse:

  • TBI 17
  • TBI-17
  • TBI17
  • TBI -17
  • TBI*17
  • ecc.

Mi piace questa flessibilità.

Purtroppo, non gestisce il modo canonico di inserire questi numeri:

  • TBI #17

Sembra che non ci sia nulla che possa fare per far corrispondere correttamente il # (hashtag, cancelletto, segno del numero, ottotrofo, segno dell’hash, simbolo della croce). Ho provato

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

ovviamente, ma non funzionano; e nemmeno un jolly completo funziona:

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

A quanto pare, la funzionalità del popup delle categorie sta prendendo il sopravvento, impedendo a Linkify di eseguire la propria corrispondenza — anche quando l’utente non sceglie una delle categorie offerte.

È questo un comportamento previsto o un bug? Qualcuno conosce un modo per aggirare il problema?

Sì, se ispezioni il codice sorgente HTML, sembra che Discourse inserisca tutto ciò che è preceduto dall’hashtag in un elemento span separato, interrompendo il flusso del tema linkify. Purtroppo, non credo esista una soluzione semplice a questo problema. :frowning: Dovresti fare un fork del tema e personalizzarlo specificamente per questo caso, a meno che qualcuno non abbia un’idea migliore.

Questo plug funziona bene, grazie. Tuttavia, in combinazione con abrify non funziona. È possibile che il link funzioni anche con la classe che questo plugin aggiunge: GitHub - metabrainz/discourse-abbrify-words: Discourse theme component for automatically adding <abbr> to abbreviations and acronyms · GitHub.

Penso che il problema sia che il plugin abbrify salta i tag link per impostazione predefinita. Puoi provare a risolvere modificando il codice, eliminando la riga 16 in head_tag.html

'a': 1,

Fammi sapere se ha funzionato o se hai bisogno di ulteriori indicazioni. :slightly_smiling_face:

2 Mi Piace

Sembra che funzioni, grazie mille.

A proposito, fa differenza se modifica solo il template CSS/HTML invece di agire direttamente su GitHub?

Sì, devi fare attenzione quando aggiorni il componente del tema da GitHub, perché sovrascriverà le tue modifiche locali in CSS/HTML.

3 Mi Piace

Grazie, mi chiedo se sia possibile fare lo stesso, ma aggiungere una classe diversa invece dell’attributo abriffy, ad esempio dfn data-info o span aria-label o altri di questo tipo

ad esempio per giocare con il contenuto: attr()

Sì, decisamente. Puoi provare a giocare con la funzione createAbbr (o con la funzione corrispondente nel tema linkify)

1 Mi Piace

Davvero buono. Devo ancora provarlo un po’.
Immagino ci siano molte possibilità qui. Hai idea di come utilizzare JSON e API in qualche modo?

Ad esempio, per poter visualizzare su WordPress parole di Abbrifly e altri dati tramite API?

Non sono sicuro di cosa intendiate. Potreste essere più concreti su cosa state cercando di ottenere? I componenti del tema vengono eseguiti in Discourse; non esiste un’API per utilizzarli altrove. Tuttavia, per la maggior parte, dovreste essere in grado di utilizzare il codice JavaScript semplicemente copiandolo altrove e modificando le parti specifiche di Discourse.

Esiste un modo per escludere i contenuti nelle onebox dall’essere resi in link?

1 Mi Piace

Puoi provare ad aggiungere il tag <aside> nelle impostazioni dei tag ignorati. Anche se non sono sicuro che tutti gli onebox siano inseriti all’interno di <aside>. Forse avremmo bisogno di un filtro basato sul nome della classe,

@sam hai qualche idea al riguardo? :arrow_double_up: Questo sembrerebbe un comportamento predefinito ragionevole (non creare collegamenti automatici negli onebox).

4 Mi Piace

L’impostazione del filtro basata sulle classi sembra perfetta; per impostazione predefinita, dovremmo escludere una casella.

7 Mi Piace

Ok, proverò a inviare una PR la prossima settimana.

2 Mi Piace

Ciao, ho installato con successo questo componente del tema per il mio tema predefinito Light oggi. Tuttavia, non funziona per me.

Ho provato con le espressioni regolari e le parole linkificate predefinite (discourse e meta). Nessuna delle due ha avuto successo.

Ho installato la versione v2.3.0.beta2 +256. Avete qualche consiglio per risolvere il problema? Grazie in anticipo :slight_smile:

1 Mi Piace

Abbiamo recentemente eseguito un refactoring del codice ed è possibile che tu debba aggiornare il tuo Discourse (il che è comunque comodo, dato che è appena stato rilasciato il 2.4 :slightly_smiling_face:)

6 Mi Piace

Il linkify nelle onebox dovrebbe ora essere disabilitato di default. @jrgong Potresti aggiornare il tuo tema e provarlo?

1 Mi Piace

Sembra che questo non sia stato ancora risolto? Pensavo di poter creare un backup esportando il componente dall’interfaccia di amministrazione, ma l’esportazione non include le impostazioni personalizzate.

Un’idea: e se l’impostazione, con tutte le sue righe, diventasse un’area di testo modificabile al doppio clic? Simile agli editor Modifica CSS/HTML? Questo renderebbe facile anche il backup/esportazione, nonché l’importazione di un elenco di elementi con un elemento per riga.

Prima:

Al doppio clic:

A proposito: potresti vedere delle espressioni regolari strane lì, ma non puoi usare | in questi campi di impostazione. Forse anche questo potrebbe essere risolto con la proposta di cui sopra.

3 Mi Piace

Di nuovo ciao! Come pensi di trasformare le parole/collegamenti (usando il plugin linkify/abrify) in un’immagine o più immagini?

Probabilmente non è possibile con il plugin attuale, ma non dovrebbe essere difficile modificare il plugin per generare tag <img> invece di <a>.

1 Mi Piace