Auto-Linkify-Wörter

@danekhollas

Unfortunately I still have the issue. I tried changing the order of the regexes in the theme settings, yet the “shorter” entry is still triggered first.

Hello @jrgong! Were you able to do bulk uploads using a CSV file? Trying to figure it out but I’m not quite sure where to click. I am not a developer btw :smiley:

I am using this :slight_smile:

https://meta.discourse.org/t/discourse-linkify-google-sheets/163985/4

So do we. I note that:

discourse,https://discourse.org
discourse meta,https://meta.discourse.org
meta discourse,https://meta.discourse.org

Gives us:

discourse
discourse meta
meta discourse

The order that these are in the Theme Settings (and presumably the database beneath) doesn’t seem to make a difference. Rather, if you extend an existing linkified word, it will pick up the difference. If you add a word in front, it doesn’t.

1 „Gefällt mir“

Hmm, that’s a bit strange. You’re right, the order in the settings shouldn’t matter, because we sort the words by length:

Not sure how much time should be invested in this since AFAIK this feature is being ported to Discourse core.

4 „Gefällt mir“

Hi,

Just noticed that the linkified words don’t have that click counter as other links have (which would be a nice feature to have, in my opinion). Is it on purpose or just a bug?

2 „Gefällt mir“

can this be restricted to specific categories/tags so that a post would have to be in the category or tagged to generate links?

1 „Gefällt mir“

Is it possible to specify a title for the link? So “ghost” becomes “ghost (see warning!)”?

Possibly using markdown link syntax:

ghost,[ghost (see warning!)](https://warning.example.com)

Or specifying the title as a third parameter:

ghost,https://warning.example.com,ghost (see warning!)

@Paracelsus the click counter is not supported in this theme, sorry.

Not really a bug, the theme is only a JavaScript code running in your browser. It doesn’t talk to the server so there’s no way to store the number of clicks.

2 „Gefällt mir“

Now in discourse under replace words:
/admin/customize/watched_words/action/replace

If I just enter the word and then just put the URL without any markdown, it works! So that is how to get it to work without the autolink theme component.

(Whereas in the theme component you put the word/phrase then a comma then the link to use, in watched word replace you enter the word in one field and JUST the link in another… do not try to enter markdown in the replacement string like I originally tried.)

4 „Gefällt mir“

Hallo, das ist eine großartige Komponente! Danke, dass Sie das gemacht haben.

Aber ein kleines Problem gibt es: Es scheint, dass die Linkifizierung ein Leerzeichen nach dem spezifischen Wort erfordert, sodass die Komponente in chinesischen und japanischen (vielleicht auch koreanischen? Diese Sprache kenne ich nicht) Discourse-Instanzen nicht gut funktioniert.

Ich bin chinesischer Muttersprachler und spreche auch Japanisch. Im Chinesischen kommt es vor, dass Leute feste Lehnwörter in Buchstaben verwenden, wie Apple, Office, BB (Blackboard), DNA usw., deren Übersetzung in der Umgangssprache selten verwendet wird. Und wir fügen normalerweise kein Leerzeichen vor/nach dieser Art von Wörtern hinzu, wenn sie in informellen Texten von Chinesisch umgeben sind.

Hier ist ein Beispiel:

你会用Office吗?
Kennen Sie die Office-Suite?

Im Japanischen ist es ähnlich.

革新に満ちたAppleの世界へようこそ。(von der offiziellen Apple Japan-Website kopiert)
Willkommen in der Welt von Apple, die voller Revolutionen ist.

Mir ist bewusst, dass die Anpassung dieser Komponente für diese beiden Sprachen viel Arbeit bedeuten könnte, da dies zu unbeabsichtigten Linkifizierungen in Sprachen führen könnte, die das Alphabet verwenden. Ich weise also nur auf die Existenz einer kleinen Unvollkommenheit hin. Nochmals vielen Dank für diese großartige Idee, diese Komponente zu entwickeln. :smiley_cat:

2 „Gefällt mir“

Das funktioniert super. Ist es möglich, es rückwirkend auszuführen, oder müssen Sie alle Links manuell suchen und ändern?

Sie sollten in der Lage sein, diese Beiträge erneut zu erstellen. Sie können auf den Schraubenschlüssel klicken und HTML neu erstellen. Wenn Sie feststellen, dass es funktioniert, können Sie nach der Rake-Aufgabe suchen, um passende Beiträge erneut zu erstellen.

Tatsächlich verlinkt dieses Theme Beiträge dynamisch, wenn sie im Browser geladen werden, sodass nichts getan werden muss. :slight_smile:

3 „Gefällt mir“

Oh. Sehr cool. Das war mir nicht bewusst, aber das ergibt Sinn.

3 „Gefällt mir“

Unser FOSS-Genealogie-Software-Glossar war zu umfangreich für einen Beitrag oder eine Verlinkung.

Wenn wir jeden Glossarbegriff verlinkt hätten, wäre jeder Beitrag in einem Meer von blauen Links ertrunken. Die Benutzer hätten wahrscheinlich aufgehört, auf Links zu klicken. Und wir wollten eine Audit-Spur für das Glossar.

Daher habe ich “Gramps Glossary” mit diesem Artikel in unserem MediaWiki-basierten Wiki verlinkt. Und jetzt verwende ich eine Anmerkung wie “(siehe [glossary term] im Gramps Glossary)”.

(Wir haben ein zweites Genealogy Glossary für Terminologie, die allgemein für das Thema Genealogie gilt und nicht spezifisch für unsere Software ist.)

1 „Gefällt mir“

Wurden Maßnahmen ergriffen, um Pipes zu ermöglichen?

Ich benutze derzeit diese Umgehungslösung:
image


Gibt es außerdem eine Möglichkeit, eine Welt von der Verlinkung auszuschließen, wenn sie sich in einer verschachtelten Klasse befindet, die von einer ausgeschlossenen Klasse betroffen ist?
Ich baue ein Forum mit einer Dokumentationskategorie und möchte dort keine verlinkten Wörter haben, da dies redundant wäre: Wörter in anderen Kategorien werden verlinkt und verweisen auf Themen in dieser Dokumentationskategorie.
Außerdem öffnen sich verlinkte Wörter in einem neuen Fenster.

Daher hat dies nicht funktioniert:
image

Hier ist ein Beispiel für das Problem, mit dem ich konfrontiert bin. Dies ist der Teil eines Textes innerhalb eines Dokumentationsthemas.

Wenn ich auf 22° halo klicke, öffnet sich eine Seite, die zu… derselben Seite, an derselben Stelle verlinkt.
Ich kann Wörter in Titeln ausschließen, insbesondere da sie eine Inhaltsübersicht enthält, aber die folgenden Absätze haben keine spezifische Klasse. Es sind normale Absätze.


Vielleicht könnte die Einstellung für die ausgeschlossene Klasse CSS-Selektoren akzeptieren?
Zum Beispiel d-toc-cooked \u003e *


Bearbeitung: Außerdem verstehe ich nicht, warum dies nicht funktioniert, da mein Wort ein direktes Kind einer ausgeschlossenen Klasse ist:

image

Der “22° Halo” wird immer noch verlinkt:

<h3 id="toc-h3-22-halo" data-d-toc="toc-h3-22-halo" class="d-toc-post-heading">
    <a name="h-22-halo-7" class="anchor" href="#h-22-halo-7"></a>
    <a href="https://discourse.canapin.com/t/ice-halos-information-and-list/28#h-22-halo-7" rel="nofollow" target="_blank" class="linkify-word no-track-link">22° Halo</a>
</h3>

Ist das, weil der HTML-Code der Inhaltsübersicht nach der “Verlinkung” generiert werden könnte?

1 „Gefällt mir“

Ja, das ist wahrscheinlich das Problem hier, beides sind JavaScript-Komponenten, sodass Sie eine Race Condition haben und das Ergebnis davon abhängt, welche zuerst ausgeführt wird.

4 „Gefällt mir“

Ich habe eine Klasse in der HTML-Allowlist hinzugefügt, also habe ich das Problem umgangen.

Die Möglichkeit, Attribute ausgeschlossen zu haben, könnte jedoch mehr Flexibilität ermöglichen, um das automatische Verlinken von Wörtern zu verhindern, indem das eingebaute data-(anything) HTML-Attribut verwendet wird, da es in Discourse standardmäßig erlaubt ist.

Beispiel:
<span> text </span><span> text </span>

Würde eine Push-Anfrage akzeptiert werden, wenn ich dies der Theme-Komponente hinzufüge?

1 „Gefällt mir“

Dies verhindert leider, dass Wörter, die eines dieser Zeichen explizit enthalten (insbesondere ., was beim Verknüpfen von Abkürzungen wie ID.1 oder id2.5 nützlich ist), verlinkt werden.

Dies lässt sich vielleicht am besten im Kern beheben, aber für den Moment gibt es hier einen PR, der die oben genannten Probleme behebt:

https://github.com/discourse/discourse-linkify-words/pull/21

Beispiel für eine Regex-Regel (passt auf id1.1 bis id10.100 (einschließlich Variationen id m.n, IDm.n und ID m.n))

/(ID¦id)\\s?(([1-9]¦10)\\.([1-9]¦[1-9][0-9]¦100))/, https://example.com/id$2