Linkit
オートコンプリートフィールドを使用して、エディター上で内部リンクと外部リンクの作成を強化するリンク機能を提供します。
linkit
インストール
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
/admin/config/content/linkit
すべてのLinkitプロファイルとその説明を一覧表示します。ここからプロファイルの作成、編集、削除、および各プロファイルのMatcher管理にアクセスできます。
/admin/config/content/linkit/add
リンクのオートコンプリート候補がどのように生成されるかを定義する新しいLinkitプロファイルを作成します。
/admin/config/content/linkit/manage/{linkit_profile}
既存のLinkitプロファイルの名前や説明などの基本設定を編集します。
/admin/config/content/linkit/manage/{linkit_profile}/matchers
このプロファイルでオートコンプリート候補がどのように生成されるかを定義するMatcherを設定します。Matcherはドラッグ&ドロップで並べ替えることができます。順序はオートコンプリートリストでの候補の表示順序を決定します。
/admin/config/content/linkit/manage/{linkit_profile}/matchers/add
このプロファイルに追加するMatcherプラグインを選択します。利用可能なMatcherには、Entity固有のMatcher(コンテンツ、ユーザー、ファイル、Taxonomyタームなど)と特殊なMatcher(メール、外部URL、フロントページ)が含まれます。
/admin/config/content/linkit/manage/{linkit_profile}/matchers/{plugin_instance_id}
特定のMatcherインスタンスの設定を構成します。設定はMatcherタイプによって異なりますが、一般的にメタデータ設定、Bundle制限、制限設定などが含まれます。
権限 1
Hooks 2
hook_linkit_matcher_alter
すべてのLinkit Matcherプラグインの定義を変更します。
hook_linkit_substitution_alter
すべてのLinkit置換プラグインの定義を変更します。
Troubleshooting 5
テキストフォーマット設定で「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を公開しません