View Mode Page

特定の表示モードでエンティティをレンダリングする追加のURLパスを作成します。

view_mode_page
1,930 sites
76
drupal.org

インストール

Drupal 11, 10, 9, 8 v4.0.3
composer require 'drupal/view_mode_page:^4.0'

概要

View Mode Pageは、サイトビルダーが異なる表示モードを使用してエンティティを表示するカスタムURLパスを作成できるようにします。標準URLでデフォルトの表示モードのみでコンテンツを表示する代わりに、このモジュールはカスタムURLパターンで設定された任意の表示モードでエンティティをレンダリングすることを可能にします。

このモジュールは、エンティティの既存のURLまたはエイリアスのプレースホルダー(%)を含むURLパターンを定義することで機能します。訪問者がこれらのカスタムパスにアクセスすると、モジュールはリクエストを傍受し、エンティティを識別し、指定された表示モードでレンダリングします。これは、要約ページ、印刷バージョン、またはコンテンツの代替表現を作成する場合に特に便利です。

このモジュールは、Node、Taxonomy Term、User、カスタムエンティティなど、標準リンクを持つすべてのDrupalエンティティタイプをサポートしています。パターンは、多言語サイトではエンティティバンドル(コンテンツタイプ)と言語でフィルタリングできます。

Features

  • 異なる表示モードでエンティティを表示するカスタムURLパターンを作成
  • 標準リンクを持つすべてのエンティティタイプをサポート(Node、Taxonomy Term、User、カスタムエンティティ)
  • エンティティパス/エイリアスのプレースホルダーとして%を使用するURLパターン構文(例:/%/summary、/%/print)
  • 特定のバンドルにのみパターンを適用するためのエンティティバンドル(コンテンツタイプ)によるフィルタリング
  • 多言語サイトサポートのための言語によるフィルタリング
  • パターンの優先度とマッチング順序を制御するドラッグ&ドロップによるパターン並べ替え
  • AND/ORロジックによるバンドルと言語の条件を使用した選択条件
  • 自動パスエイリアス統合 - 内部パスとURLエイリアスの両方で動作
  • シームレスなURL処理のためのインバウンドおよびアウトバウンドパス処理
  • エンティティタイプ選択時に動的に更新されるAJAX対応パターン編集フォーム
  • 条件に基づく自動重み調整による重みベースのパターン順序付け

Use Cases

記事要約ページ

記事のティーザー/要約ページを作成します。パス/%/summary、エンティティタイプContent、バンドルArticle、表示モードTeaserでパターンを設定します。ユーザーが/my-article/summaryにアクセスすると、フルコンテンツの代わりにティーザーとしてレンダリングされた記事が表示されます。

印刷用バージョン

コンテンツの印刷最適化バージョンを提供します。ナビゲーション、サイドバー、その他の非必須要素を削除したカスタム「Print」表示モードで/%/printパターンを作成します。ユーザーは/any-content/printにアクセスしてプリンターフレンドリーなバージョンを取得できます。

モバイル最適化コンテンツ

専用URLでモバイル固有のレイアウトを提供します。レスポンシブデザインだけでは不十分なシナリオに便利な、モバイル表示用に設定された表示モードで/%/mobileのようなパターンを作成します。

言語固有の要約ページ

多言語サイトで、特定の言語のみの要約ページを作成します。英語コンテンツのみ/content/summaryでティーザーを表示するように言語条件付きでパターンを設定し、フランス語コンテンツは/content/resumeを持つことができます。

コンテンツタイプのプレビューページ

編集者が異なるコンテキストでコンテンツがどのように表示されるかをプレビューできるようにします。リスト、ブロック、またはウィジェットで使用される各表示モードのパターンを作成し、編集者が/content/card-previewにアクセスしてカードとしてどのように表示されるかを確認できるようにします。

コンテンツ用のAPIライクなエンドポイント

軽量なJSONまたは最小限のHTMLエンドポイントを作成します。最小限のマークアップで表示モードを設定し、/%/embedのようなパターンを使用して、AJAXローディングやiframe埋め込み用の埋め込み可能なバージョンのコンテンツを提供します。

Tips

  • パターンの順序は重要です - より具体的なパターン(バンドル/言語条件付き)は汎用的なパターンより先に順序付けする必要があります
  • 管理画面で簡単に識別できるよう、パターンには説明的なラベルを使用してください
  • 適切な機能を確保するため、URLエイリアスと内部パスの両方でパターンをテストしてください
  • SEOへの影響を考慮してください - 検索エンジンが表示モードページURLを別のコンテンツとしてインデックスする可能性があります
  • 複数のパターンがマッチする可能性がある場合、重みシステムを使用してパターンマッチングの優先度を制御してください
  • 変更がすぐに反映されるように、パターンの作成または変更後にキャッシュをクリアしてください

Technical Details

Admin Pages 4
View mode page /admin/config/search/view-mode-page

すべての表示モードパターンを一覧表示するメイン設定ページ。ドラッグ&ドロップでパターンの並べ替え、既存パターンの編集と削除が可能です。リストにはパターンラベル、URLパターン、エンティティタイプ、表示モード、選択条件が表示されます。

パターンを追加 /admin/config/search/view-mode-page/add

新しい表示モードパターンを作成するためのフォーム。URLパターンを定義し、エンティティタイプを選択し、バンドルと言語のフィルターを設定し、レンダリング用の表示モードを選択します。

パターンを編集 /admin/config/search/view-mode-page/{view_mode_page_pattern}

既存の表示モードパターンを編集するためのフォーム。追加フォームと同じフィールドで、現在の値が事前に入力されています。

パターンを削除 /admin/config/search/view-mode-page/{view_mode_page_pattern}/delete

表示モードパターンを削除するための確認フォーム。

権限 1
view_mode_pageを管理

表示モードパターンの作成、編集、削除、並べ替えを許可します。この権限はデフォルトで制限されています。

Hooks 1
hook_block_build_alter

異なる表示モードでパスエイリアスを使用する際の誤ったキャッシュを防ぐため、system_main_blockにurl.pathキャッシュコンテキストを追加するために実装されています。

Troubleshooting 5
パターンが期待通りにURLにマッチしない

パターンにエンティティパスの%プレースホルダーが含まれていることを確認してください。%は完全なエンティティURLまたはエイリアスを表す必要があります。パターンの作成または変更後にすべてのキャッシュをクリアしてください。

キャッシュされたコンテンツが間違った表示モードで表示される

モジュールはsystem_main_blockにurl.pathキャッシュコンテキストを追加します。問題が続く場合は、テーマとカスタムブロックがURLパスで適切に変化することを確認してください。

パターンがパスエイリアスでは機能するが内部パスでは機能しない(またはその逆)

パターンは両方で機能するはずです。パスエイリアスシステムが正しく機能していること、およびエンティティにエイリアスが適切に設定されていることを確認してください。

選択条件が正しくフィルタリングされない

バンドルと言語の条件が適切に設定されていることを確認してください。パターンリストページを使用して条件が正しく表示されていることを確認してください。選択ロジック(and/or)が要件に一致していることを確認してください。

エンティティタイプがドロップダウンに表示されない

標準リンクテンプレートとパスフィールドサポートを持つエンティティタイプのみが表示されます。カスタムエンティティは互換性を持たせるためにこれらの機能を実装する必要があります。

Security Notes 3
  • 「administer view_mode_page」権限は制限されており、信頼できる管理者にのみ付与する必要があります
  • 表示モードページURLは既存のコンテンツアクセス権限を尊重します - ユーザーはエンティティを表示するために「access content」権限を持っている必要があります
  • このモジュールはエンティティアクセス制御をバイパスしません。誰がアクセスできるかではなく、エンティティがどのようにレンダリングされるかのみを変更します