Auto-Linkify-Wörter

@danekhollas

Leider habe ich das Problem immer noch. Ich habe versucht, die Reihenfolge der Regex-Regeln in den Theme-Einstellungen zu ändern, doch der „kürzere

Hallo @jrgong! Konntest du bereits Massenhochladungen mit einer CSV-Datei durchführen? Ich versuche es herauszufinden, bin mir aber nicht sicher, wo ich klicken muss. Übrigens bin ich kein Entwickler :smiley:

Ich verwende dies :slight_smile:

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

Wir auch. Ich stelle fest:

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

Liefert uns:

discourse
discourse meta
meta discourse

Die Reihenfolge in den Theme-Einstellungen (und vermutlich in der darunterliegenden Datenbank) scheint keinen Unterschied zu machen. Vielmehr wird der Unterschied erkannt, wenn man ein bereits verlinktes Wort erweitert. Fügt man jedoch ein Wort davor hinzu, funktioniert das nicht.

1 „Gefällt mir“

Hmm, das ist etwas seltsam. Du hast recht, die Reihenfolge in den Einstellungen sollte keine Rolle spielen, da wir die Wörter nach Länge sortieren:

Ich bin mir nicht sicher, wie viel Zeit dafür investiert werden sollte, da diese Funktion meines Wissens nach in den Discourse-Kern portiert wird.

4 „Gefällt mir“

Hallo,

mir ist gerade aufgefallen, dass die verlinkten Wörter nicht denselben Klickzähler haben wie andere Links (was meiner Meinung nach eine schöne Funktion wäre). Ist das Absicht oder nur ein Fehler?

2 „Gefällt mir“

Kann dies auf bestimmte Kategorien/Tags beschränkt werden, sodass ein Beitrag nur dann Links generiert, wenn er in der entsprechenden Kategorie ist oder mit dem entsprechenden Tag versehen wurde?

1 „Gefällt mir“

Ist es möglich, einen Titel für den Link anzugeben? Also aus „ghost

@Paracelsus Der Klickzähler wird in diesem Theme nicht unterstützt, sorry.

Es ist eigentlich kein Fehler. Das Theme besteht nur aus JavaScript-Code, der in deinem Browser ausgeführt wird. Es kommuniziert nicht mit dem Server, daher gibt es keine Möglichkeit, die Anzahl der Klicks zu speichern.

2 „Gefällt mir“

Jetzt im Discourse unter Wörter ersetzen:
/admin/customize/watched_words/action/replace

Wenn ich nur das Wort eingebe und dann einfach die URL ohne Markdown hinzufüge, funktioniert es! So lässt es sich also ohne die Autolink-Themenkomponente zum Laufen bringen.

(Während man im Themenkomponenten das Wort/die Phrase und dann ein Komma und den zu verwendenden Link eingibt, gibt man bei ‘beobachtete Wörter ersetzen’ das Wort in ein Feld und NUR den Link in ein anderes ein… Versuchen Sie nicht, Markdown in die Ersatzzeichenkette einzugeben, wie ich es ursprünglich versucht habe.)

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