単語の自動リンク化

@danekhollas

残念ながら、まだ問題が解決していません。テーマ設定で正規表現の順序を変更してみましたが、短い方のエントリが依然として優先的にトリガーされてしまいます。

@jrgong さん、こんにちは!CSV ファイルを使って一括アップロードはできましたか?手順を探しているのですが、どこをクリックすればよいのかよくわかりません。ちなみに私は開発者ではありません :smiley:

これを使っています :slight_smile:

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

私たちも同じ状況です。以下に注目してください。

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

結果は以下のようになります。

discourse
discourse meta
meta discourse

テーマ設定(およびおそらくその背後にあるデータベース)での順序は関係ないようです。むしろ、既存のリンク化された単語を拡張すると、その違いが反映されますが、単語を前に追加するだけでは反映されません。

「いいね!」 1

うーん、少し奇妙ですね。おっしゃる通り、設定の順序は問題ないはずです。なぜなら、単語は長さでソートされるからです:

この機能は AFAIK(私の知る限り)Discourse コアに移植されているため、ここにどれほどの時間を割くべきか分かりません。

「いいね!」 4

こんにちは、

リンク化された単語に、他のリンクにあるようなクリックカウンターがないことに気づきました(個人的には、あると嬉しい機能だと思います)。これは意図的なものですか、それとも単なるバグですか?

「いいね!」 2

特定のカテゴリやタグに限定して、そのカテゴリに属するかタグ付けされた投稿のみでリンクを生成できるようにすることは可能でしょうか?

「いいね!」 1

リンクにタイトルを指定することは可能ですか?つまり、「ghost」を「ghost(警告を参照!)」のように表示できますか?

おそらく、Markdown リンク構文を使用して:

ghost,[ghost (警告を参照!)](https://warning.example.com)

または、タイトルを第 3 のパラメータとして指定して:

ghost,https://warning.example.com,ghost (警告を参照!)

@Paracelsus ごめんなさい、このテーマではクリックカウンターはサポートされていません。

これはバグではなく、テーマはブラウザ内で動作する JavaScript コードに過ぎません。サーバーと通信しないため、クリック回数を保存する方法がないのです。

「いいね!」 2

Discourse の「単語置換」機能では、以下の URL を使用します。
/admin/customize/watched_words/action/replace

単語を入力し、その後、マークダウンを含まない URL のみを入力すれば動作します。これが、autolink テーマコンポーネントを使用せずに動作させる方法です。

(テーマコンポーネントでは「単語/句」の後にカンマ、そして使用するリンクを入力しますが、「監視ワード置換」では、単語を一つのフィールドに、リンクを別のフィールドにのみ入力します。私が最初に試したように、置換文字列にマークダウンを入力しようとしないでください。)

「いいね!」 4

こんにちは、このコンポーネントは素晴らしいですね!作成していただきありがとうございます。

しかし、少し問題があります。リンク化には特定の単語の後にスペースが必要なようで、そのためこのコンポーネントは中国語や日本語(韓国語もそうかもしれませんが、私はその言語を知りません)のDiscourseインスタンスではうまく機能しません。

私は中国語のネイティブスピーカーであり、日本語も話します。中国語では、Apple、Office、BB(Blackboard)、DNAなど、文字の中で使われる固定の借用語があり、その翻訳は日常言語ではほとんど使われません。また、非公式な文章では、このような単語が中国語に囲まれている場合、その前後にスペースを追加することは通常ありません。

これは一例です。

你会用Office吗?
Officeスイートの使い方をご存知ですか?

日本語でも同様です。

革新に満ちたAppleの世界へようこそ。(Apple Japan公式サイトより引用)
革新に満ちたAppleの世界へようこそ。

このコンポーネントをこれらの2つの言語に適応させるのは大変な作業になる可能性があることは承知しています。なぜなら、アルファベットを使用する言語で意図しないリンク化につながる可能性があるからです。ですので、小さな不完全な点が存在することを指摘するだけです。この素晴らしいコンポーネントのアイデアに改めて感謝します。:smiley_cat:

「いいね!」 2

これは素晴らしいですね。遡って実行することは可能ですか、それともすべてのリンクを手動で検索して変更する必要がありますか?

それらの投稿を再ベイクできるはずです。レンチをクリックしてHTMLを再構築できます。それが機能することを確認したら、一致する投稿の再ベイク方法のrakeタスクを検索できます。

実際には、このテーマはブラウザで読み込まれたときに投稿を動的にリンクするため、何もする必要はありません。 :slight_smile:

「いいね!」 3

ああ。とてもクールですね。気づきませんでしたが、理にかなっています。

「いいね!」 3

当社のFOSS系譜ソフトウェアの用語集は、投稿やリンク化には大きすぎました。

用語集の各用語をリンク化した場合、すべての投稿が青いリンクの海に沈んでしまうでしょう。ユーザーはリンクをクリックしなくなる可能性が高いです。また、用語集の監査証跡も必要でした。

そのため、「Gramps Glossary」を、MediaWiki搭載のWikiの記事にリンク化しました。そして今では、「(参照 [glossary term]Gramps Glossaryにあります)」のような注釈を使用しています。

(ソフトウェア固有ではなく、系譜という主題に一般的な用語については、2番目のGenealogy Glossaryがあります。)

「いいね!」 1

パイプが許可されるように何か変更がありましたか?

現在、次のような回避策を使用しています。
image


また、除外されたクラスの非常に深い子孫の中にいるときに、特定のワールドをリンク化から除外する方法はありますか?
ドキュメントカテゴリを持つフォーラムを構築していますが、リンク化された単語は冗長になるため、ドキュメントカテゴリ内ではリンク化を避けたいです。他のカテゴリの単語はリンク化され、このドキュメントカテゴリのトピックにリンクされます。
さらに、リンク化された単語は新しいウィンドウで開きます。

そのため、これは機能しませんでした。
image

ここで直面している問題の例を示します。これは、ドキュメントトピック内のテキストの一部です。

「22° halo」をクリックすると、同じページ、同じ場所へのリンクが表示されるページが開きます。
タイトルの単語を除外することはできますが、特に目次が含まれているため、その後の段落には特定のクラスがありません。それらは通常の段落です。


おそらく、「除外されたクラス」設定はCSSセレクターを受け入れることができますか?
たとえば、d-toc-cooked > *


編集:また、単語が除外されたクラスの直接の子であるのに、これが機能しない理由がわかりません。

image

「22° Halo」はまだリンク化されています。

<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>

これは、目次のHTMLコードが「リンク化」の後に生成されるためでしょうか?

「いいね!」 1

ええ、おそらくそれが問題です。これらはどちらもJavaScriptコンポーネントなので、競合状態が発生し、どちらが先に実行されるかによって結果が決まります。

「いいね!」 4

HTML許可リストにクラスを追加したので、この問題を回避しました。

しかし、ボタンで属性を除外できれば、Discourseでデフォルトで許可されている data-(anything) HTML属性を使用して、リンク化する単語を防ぐための柔軟性が高まります。

例:
<span> text </span><span> text </span>

このテーマコンポーネントにこれを追加できた場合、プッシュリクエストは受け入れられますか?

「いいね!」 1

これは残念ながら、これらのいずれか(特に.。これはID.1やid2.5のような略語のリンク付けに便利です)を明示的に含む単語のリンク付けを妨げます。

これはコアで修正するのが最善かもしれませんが、当面は上記のすべての問題を修正するPRはこちらです。
https://github.com/discourse/discourse-linkify-words/pull/21

サンプル正規表現ルール(id1.1からid10.100まで(id m.nIDm.nID m.nのバリエーションを含む)に一致します)

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