Custom Breadcrumbs
コンテンツエンティティページ、Views、Page Manager、その他のコントローラーページでカスタムパンくずリストを作成・管理するための設定エンティティシステムを提供します。
custom_breadcrumbs
インストール
composer require 'drupal/custom_breadcrumbs:^1.1'
概要
Custom Breadcrumbsは、サイト管理者がDrupalの任意のコンテンツエンティティタイプに対してカスタムパンくずリストを定義・管理できる強力なモジュールです。URL構造に依存するデフォルトのパンくずシステムとは異なり、このモジュールはユーザーフレンドリーな管理インターフェースを通じて、パンくずのパスとタイトルを完全に制御できます。
このモジュールは2種類のパンくず定義をサポートしています:特定のエンティティタイプとバンドルに適用されるコンテンツエンティティベースのパンくずと、ワイルドカードを使用したURLパターンにマッチするパスベースのパンくずです。どちらのタイプもTokenとの完全な統合をサポートし、動的なパンくず生成が可能です。
主な機能には、自動パンくずツリーのためのタクソノミーターム階層統合、多言語サイト向けの言語別パンくず設定、カスタマイズ可能なホームリンク設定、現在のページタイトル表示オプション、クエリパラメータベースのパンくず用キャッシュコンテキスト管理が含まれます。また、エンティティ表示モード内でパンくずを表示できる疑似フィールドも提供しており、検索結果のノードティーザーでパンくずを表示するのに便利です。
Features
- 有効/無効ステータスを持つ設定エンティティとしてカスタムパンくず設定を作成
- バンドルレベルの詳細指定で任意のコンテンツエンティティタイプ(ノード、タクソノミーターム、ユーザーなど)のパンくずを定義
- ワイルドカード(*)をサポートしたURLパターンを使用したパスベースのパンくずを作成
- 動的なパンくずパスとタイトルのためのTokenモジュールとの完全な統合
- 自動パンくずツリーのための<term_hierarchy:field_name>構文を使用したタクソノミーターム階層統合
- 多言語サイト向けの言語別パンくず設定
- カスタマイズ可能なテキストを持つ設定可能なホームリンク
- オプションのリンク付きで現在のページタイトルを最後のパンくず項目として追加するオプション
- 設定可能な文字数制限によるタイトル長のトリミング
- 管理ページでカスタムパンくずを無効にする機能
- すべてのページに基本的なパンくずを適用するサイト全体パンくずモード
- リンクなしのパンくず項目を作成するための<nolink>構文
- クエリパラメータでの適切なキャッシュのための追加キャッシュコンテキスト設定
- エンティティ表示モード内でパンくずを表示するための疑似フィールド
- パンくず設定を翻訳するためのConfig translation対応
Use Cases
記事コンテンツタイプ用のカスタムパンくず
すべての記事ノードに対して、ホーム > ニュース > [記事タイトル]というパンくずトレイルを作成します。サイト構築 > Custom breadcrumbsに移動し、タイプ = コンテンツエンティティ、エンティティタイプ = node、エンティティバンドル = articleで新しいパンくずを追加します。パンくずパスを「/news」に、パンくずタイトルを「ニュース」に設定します。記事タイトルを含めるには、グローバル設定で「現在のページタイトルを追加」を有効にしてください。
タクソノミーターム階層パンくず
カテゴリタームでタグ付けされたノードに対して、完全なタクソノミー階層をパンくずとして表示します。コンテンツタイプ用のパンくず設定を作成し、パンくずパスフィールドに「<term_hierarchy:field_categories>」を使用します(field_categoriesはタクソノミー参照フィールド)。これにより、各親タームのパンくずリンクが自動的に作成されます。
クエリベースのパンくずを持つ検索結果
検索クエリを含む検索結果ページ用のパンくずを作成します。「/search/*」にマッチするパスベースのパンくずを作成します。Tokenモジュールを使用してクエリ値を含めます。検索クエリごとに適切なキャッシュを確保するため、追加キャッシュコンテキストに「url.query_args:search」を追加します。
多言語パンくず
言語ごとに異なるパンくずトレイルを設定します。同じエンティティタイプ/バンドルに対して、それぞれ異なる言語を選択した複数のパンくず設定を作成します。モジュールは現在のインターフェース言語に基づいて適切なパンくずを自動的に表示します。
ノードティーザー上のパンくず
ノードティーザー内にパンくずを表示します(検索結果に便利)。コンテンツタイプの表示管理設定に移動し、ティーザー表示モードに切り替えて、「Breadcrumbs」フィールドを有効にします。ティーザー内でパンくずを表示したい位置に配置してください。
リンクなしのパンくず項目
一部の項目がクリック可能なリンクではないパンくずトレイルを作成します。テキストのみとして表示する項目のパスに「<nolink>」を使用します。例:パンくずパス = 「/products」と「<nolink>」、パンくずタイトル = 「製品」と「現在のカテゴリ」。
Viewsページのパンくず
Viewsページにカスタムパンくずを追加します。ViewsページのURL(例:「/blog」や「/products/*」)にマッチするパスパターンでパスベースのパンくずを作成します。これらのページに必要なパンくずパスとタイトルを定義してください。
Tips
- Viewsページ、カスタムコントローラー、コンテンツエンティティを持たないページにはパスベースのパンくずを使用してください
- パンくずサービスは優先度1003を持ち、他のほとんどのパンくずビルダーより高いため、カスタムパンくずが優先されます
- Token統合とタクソノミー階層を組み合わせて、複雑なネストされたカテゴリパンくずを作成できます
- すべてのページがホームリンクと現在のページタイトルを含む基本的なパンくず機能を持つようにするには、「サイト全体パンくず」を有効にしてください
- 検索結果のナビゲーションを改善するには、表示管理の疑似フィールド機能を使用してノードティーザーにパンくずを含めてください
- パンくず設定はDrupalの設定管理システムでエクスポートおよびインポートできることを覚えておいてください
Technical Details
Admin Pages 4
/admin/structure/custom-breadcrumbs
設定されたすべてのカスタムパンくずエンティティを表示するメインリストページ。パンくずラベル、エンティティタイプ、エンティティバンドル、言語、有効/無効ステータスを表示します。各パンくず設定の編集、削除、有効/無効切り替えの操作を提供します。
/admin/structure/custom-breadcrumbs/add
新しいカスタムパンくず設定を作成するフォーム。パンくずタイプ(コンテンツエンティティまたはパスベース)、対象のエンティティタイプとバンドル、言語、Token対応のパンくずパスとタイトルを指定できます。
/admin/structure/custom-breadcrumbs/{custom_breadcrumbs}
既存のカスタムパンくず設定を編集するフォーム。追加フォームと同じフィールドで、現在の値が入力されています。
/admin/config/user-interface/custom-breadcrumbs
Custom Breadcrumbsモジュールのグローバル設定。ホームリンク、現在のページ表示、その他のサイト全体オプションのデフォルト動作を設定します。
権限 1
Hooks 3
hook_entity_extra_field_info
hook_entity_extra_field_info()を実装して、すべてのコンテンツエンティティバンドルに「Breadcrumbs」疑似フィールドを提供します。これにより、表示管理インターフェースを通じてエンティティ表示モード内でパンくずを表示できます。
hook_entity_view
hook_entity_view()を実装して、エンティティ表示で「breadcrumbs」コンポーネントが有効な場合にパンくずをレンダリングします。検索結果のノードティーザーでパンくずを表示するのに便利です。
hook_help
hook_help()を実装して、モジュールヘルプページにREADME.mdからヘルプテキストを提供します。Markdownモジュールが利用可能な場合はMarkdownレンダリングをサポートします。
Troubleshooting 5
パンくず設定が有効(ステータス = チェック済み)であることを確認してください。エンティティタイプとバンドルが正確に一致していることを確認してください。管理ページの場合は「管理ページで無効化」が有効になっていないか確認してください。変更後はキャッシュをクリアしてください。
「追加キャッシュコンテキスト」フィールドに適切なキャッシュコンテキストを追加してください。例えば、検索クエリパラメータには「url.query_args:search」を使用します。これにより、異なるクエリ値に対してパンくずが別々にキャッシュされます。
Tokenモジュールが正しくインストールされていることを確認してください。正しいToken構文を使用していることを確認してください(例:ノードの場合は[node:title])。パンくずフォームのTokenブラウザを使用して、エンティティタイプで有効なTokenを見つけてください。
「<term_hierarchy:field_name>」構文を使用してください。field_nameはタクソノミーターム参照フィールドのマシン名です。コンテンツタイプにフィールドが存在し、ターム参照が含まれていることを確認してください。
言語ごとに個別のパンくず設定を作成してください。「言語」フィールドを特定の言語コードに設定してください。フォールバックパンくずには「言語の指定なし」で1つ作成してください。これは言語固有の設定が存在しない場合に使用されます。
Security Notes 3
- モジュールはスクリプトインジェクションを防ぐためにホームリンクテキストにXSSフィルタリングを使用しています
- すべてのパンくずURLは先頭のスラッシュまたは有効なToken構文を必要とするように検証されます
- すべての設定変更には管理権限「administer custom_breadcrumbs」が必要です