Linkit

オートコンプリートフィールドを使用して、エディター上で内部リンクと外部リンクの作成を強化するリンク機能を提供します。

linkit
148,428 sites
221
drupal.org

インストール

Drupal 11, 10 v7.0.12
composer require 'drupal/linkit:^7.0'

概要

Linkitは、オートコンプリートフィールドを使用して、WYSIWYGエディター内で内部リンクと外部リンクを作成するための強化されたインターフェースを提供します。このモジュールはNode、ユーザー、Taxonomyターム、ファイル、コメント、およびcanonicalリンクテンプレートを定義するすべてのEntityタイプの基本的なサポートに対応しています。

このモジュールは、オートコンプリートの候補を生成するためにどのMatcherプラグインを使用するかを定義する設定可能なプロファイルを通じて動作します。各プロファイルには、異なる設定で複数のMatcherを設定でき、リンク候補に表示されるコンテンツをきめ細かく制御できます。

LinkitはCKEditor 5と統合し、標準のリンクダイアログをオートコンプリート機能を備えた強化版に置き換えます。ユーザーがリンクフィールドに入力すると、Linkitは設定されたMatcherに問い合わせを行い、コンテンツタイプ、作成日、作成者情報などのメタデータとともに関連する候補を表示します。

このモジュールには、コンテンツがレンダリングされる際にEntity参照(entity:type/id形式で保存)を実際のURLに変換するテキストフォーマットフィルターが含まれており、URLエイリアスが変更されてもリンクが常に最新の状態を保つことを保証します。

Features

  • カスタマイズ可能なプロファイルを使用したWYSIWYGエディターでのオートコンプリートリンク機能
  • Node、ユーザー、ファイル、Taxonomyターム、メール、外部URL、フロントページ、お問い合わせフォーム用の複数の組み込みMatcher
  • canonicalリンクテンプレートを持つすべてのEntityタイプ用の自動デリバーを備えた汎用Entity Matcher
  • オートコンプリート候補における各Entityタイプの設定可能なメタデータ表示(Token対応)
  • Entity MatcherのBundleフィルタリングとグループ化オプション
  • EntityのURLがどのように生成されるかを制御するURL置換システム(canonical、直接ファイルURL、メディアファイルURL)
  • 強化されたリンクダイアログを備えたCKEditor 5統合
  • オートコンプリート機能を持つリンクフィールド用のLinkitフィールドウィジェット
  • リンクレンダリング時の適切なURL置換のためのLinkitフィールドフォーマッター
  • Entity参照を現在のURLに変換するLinkitテキストフォーマットフィルター
  • 候補における公開/非公開コンテンツのフィルタリングサポート
  • ロールベースのユーザーフィルタリングサポート
  • ファイル拡張子フィルタリングと画像サムネイル表示オプション
  • Entityラベルからのタイトル属性の自動入力
  • カスタムMatcherと置換のためのプラグイン可能で変更可能なアーキテクチャ
  • リンク内のクエリとフラグメントの保持

Use Cases

コンテンツ作成の強化

コンテンツ編集者は数文字入力するだけで既存のコンテンツを素早く見つけてリンクできます。オートコンプリートはコンテンツタイトル、タイプ、作成日、作成者を表示し、エディターを離れることなく正しいコンテンツを簡単に特定してリンクできます。

ファイルとメディアへのリンク

ファイルURLを手動でコピーする代わりに、編集者は名前でファイルを検索し、ファイルへのリンクを直接作成できます。メディアEntityの場合、置換はメディアページではなく実際のファイルにリンクするように設定できます。

マルチサイトまたは多言語コンテンツ管理

Linkitは翻訳されたコンテンツを現在の言語コンテキストで表示し、任意の言語のパスエイリアスで機能するURLを生成することで、適切に処理します。

ユーザーロールによる制御されたリンク

ユーザーMatcherは特定のロールを持つユーザーのみを表示するように設定でき、イントラネットや公開サイトでスタッフプロファイルへのリンクを作成する際に便利です。

メールリンクの作成

編集者がメールアドレスを入力すると、Linkitは自動的にmailto:リンクの作成を提案し、コンテンツへのメールリンク追加プロセスを効率化します。

リンクフィールドのオートコンプリート

リンクフィールドでLinkitウィジェットを使用すると、WYSIWYGエディター外でも同じオートコンプリート体験が得られ、メニューリンク、コールトゥアクションボタン、またはあらゆるリンクフィールドに便利です。

URLの整合性維持

Linkitで作成されたリンクはEntity UUIDを保存するため、パスエイリアスが変更されても、Linkitフィルターはコンテンツが表示される際にリンクが常に正しい現在のURLに解決されることを保証します。

Tips

  • Matcher設定で「[node:content-type:name] by [node:author]」のようなトークンを含む説明的なメタデータを使用して、編集者がコンテンツを識別しやすくします
  • 異なる用途のために複数のプロファイルを作成します - 一般的なコンテンツリンク用のプロファイルと、特定のコンテンツタイプに制限されたプロファイルなど
  • 大量のコンテンツを持つサイトでのパフォーマンスを向上させるために適切な結果制限を設定します
  • プロファイル内のMatcherの順序が候補の表示順序を決定します - 最もよくリンクされるコンテンツタイプを最初に配置します
  • 多くのBundleを持つEntityタイプにリンクする際は、Bundleのグループ化を使用して候補を整理します
  • Linkitウィジェットで自動リンクテキスト入力を有効にして、リンクフィールド使用時のコンテンツ編集を高速化します
  • リンクフィールドでの一貫したURL処理のために、Linkitフォーマッターのプロファイルがウィジェットのプロファイルと一致していることを確認します

Technical Details

Admin Pages 6
Linkitプロファイル /admin/config/content/linkit

すべてのLinkitプロファイルとその説明を一覧表示します。ここからプロファイルの作成、編集、削除、および各プロファイルのMatcher管理にアクセスできます。

プロファイルを追加 /admin/config/content/linkit/add

リンクのオートコンプリート候補がどのように生成されるかを定義する新しいLinkitプロファイルを作成します。

プロファイルを編集 /admin/config/content/linkit/manage/{linkit_profile}

既存のLinkitプロファイルの名前や説明などの基本設定を編集します。

Matcherを管理 /admin/config/content/linkit/manage/{linkit_profile}/matchers

このプロファイルでオートコンプリート候補がどのように生成されるかを定義するMatcherを設定します。Matcherはドラッグ&ドロップで並べ替えることができます。順序はオートコンプリートリストでの候補の表示順序を決定します。

Matcherを追加 /admin/config/content/linkit/manage/{linkit_profile}/matchers/add

このプロファイルに追加するMatcherプラグインを選択します。利用可能なMatcherには、Entity固有のMatcher(コンテンツ、ユーザー、ファイル、Taxonomyタームなど)と特殊なMatcher(メール、外部URL、フロントページ)が含まれます。

Matcherを編集 /admin/config/content/linkit/manage/{linkit_profile}/matchers/{plugin_instance_id}

特定のMatcherインスタンスの設定を構成します。設定はMatcherタイプによって異なりますが、一般的にメタデータ設定、Bundle制限、制限設定などが含まれます。

権限 1
Linkitプロファイルを管理

Linkitプロファイルとそのmatcher設定の作成、編集、削除をユーザーに許可します。

Hooks 2
hook_linkit_matcher_alter

すべてのLinkit Matcherプラグインの定義を変更します。

hook_linkit_substitution_alter

すべてのLinkit置換プラグインの定義を変更します。

Troubleshooting 5
リンクが実際のURLではなくentity:node/123として表示される

テキストフォーマット設定で「Linkit URL converter」フィルターを有効にしてください。「許可されたHTMLタグを制限」フィルターより前に実行されることを確認してください。

リンクからデータ属性が削除される

「許可されたHTMLタグを制限」を使用している場合は、許可される<a>タグ設定にdata-entity-type、data-entity-uuid、およびdata-entity-substitution属性を追加してください。

オートコンプリートの候補が表示されない

選択したLinkitプロファイルにMatcherが設定されていることを確認してください。テキストフォーマットのCKEditor設定でプロファイルが正しく選択されているか確認してください。

候補に非公開コンテンツが表示されない

コンテンツMatcherの設定を編集し、「非公開ノードを含める」を有効にしてください。ユーザーには非公開コンテンツを表示する権限も必要です。

タイトル属性が自動的に追加されない

Linkitフィルター設定で「タイトル属性を自動的に設定」オプションを有効にしてください。HTML制限を使用している場合は、<a>タグでtitle属性が許可されていることを確認してください。

Security Notes 3
  • オートコンプリートエンドポイントはEntityアクセスを尊重します - ユーザーは表示権限のあるEntityのみを見ることができます
  • 候補での非公開コンテンツの表示はDrupalの標準権限システムに従います
  • 保存されたリンク内のEntity UUIDは、適切にフィルタリングされた場合、エンドユーザーに内部IDを公開しません