インストール
composer require 'drupal/insert_view:^3.0'
概要
Insert Viewは、コンテンツエディターがシンプルで直感的なタグ構文を使用して、テキストコンテンツ内にDrupal Viewsを直接埋め込むことができる強力なテキストフィルターを提供します。これにより、動的でデータベース駆動型のコンテンツを、このフィルターが有効なテキストフォーマットを使用するNode、Block、またはその他のテキストフィールド内の任意の場所に配置できます。
タグ構文は[view:name=display=args=limit:number]のパターンに従い、View名、ディスプレイID、引数、およびオプションで結果数の制限を指定できます。このフィルターは現在のURLからの動的な引数置換をサポートしており、コンテキストを認識した埋め込みViewを作成できます。
コンテンツを処理する際、フィルターは遅延レンダリングのためにDrupalのプレースホルダーシステムを使用し、パフォーマンスの最適化に役立ちます。また、Viewのアクセス権限を尊重し、ユーザーはアクセス権限のあるViewのみを表示できます。
Features
- シンプルなブラケット構文[view:name=display=args]を使用して、任意のViewsディスプレイをテキストコンテンツに埋め込み可能
- スラッシュで区切られた複数の引数をサポートするView引数機能
- 現在のURLパスセグメントにマップする%0、%1、%2プレースホルダーを使用した動的URL引数置換
- Viewのデフォルトのページあたり表示件数設定を上書きするオプションのlimitパラメータ(limit:0ですべての結果を表示)
- Viewディスプレイのアクセス権限を尊重する自動アクセス制御チェック
- パフォーマンス向上のためのDrupalのプレースホルダーシステムを使用した遅延レンダリング
- ディスプレイIDが指定されていない場合はデフォルトディスプレイにフォールバック
- コンテンツ編集ページに表示されるフィルターのヒントとヘルプテキスト
Use Cases
ページに最新コンテンツのViewを埋め込む
[view:blog_posts=block_1]を使用して、静的ページの本文コンテンツ内にblog_posts Viewのblock_1ディスプレイを表示し、最新のブログ投稿リストを追加します。
現在のNodeに基づいて関連コンテンツを表示
URL引数置換を使用して関連コンテンツを表示します。例えば、[view:related_content=default=%1]で%1が現在のURLパスからNode IDを取得し、関連アイテムをフィルタリングします。
動的なランディングページを作成
[view:featured_products]、[view:testimonials=block]、[view:latest_news=default=5]などのタグを使用して、静的コンテンツと複数の埋め込みViewを組み合わせ、動的なページレイアウトを持つリッチなランディングページを構築します。
埋め込みViewの結果数を制限
limitパラメータを使用してViewのデフォルトのページングを上書きします。例えば、[view:team_members=default==limit:3]はViewで設定されたページあたりの表示件数に関係なく、3人のチームメンバーのみを表示します。
コンテキストフィルターに複数の引数を渡す
Viewに複数のコンテキストフィルターがある場合、スラッシュで区切って引数を渡します:[view:product_list=default=electronics/featured]は最初の引数として「electronics」、2番目の引数として「featured」を渡します。
Tips
- 「Full HTML with Views」という専用のテキストフォーマットを作成し、Viewを埋め込むコンテンツを通常のコンテンツから分離することで、より良いキャッシュ管理が可能になります
- アクセス権限が正しく設定されていることを確認するため、常に異なるユーザーロールで埋め込みViewをテストしてください
- View プレビュー画面を使用して正しいディスプレイIDを確認してください - ディスプレイタブにカーソルを合わせるとURLでIDが表示されます
- 引数置換を使用する場合、%0プレースホルダーはURLパスのドメインの後の最初のセグメントに対応します
- ページャー設定に関係なくすべてを表示する必要がある場合は、limit:0を使用してすべての結果を表示します
- ディスプレイパラメータを省略すると、デフォルトディスプレイが自動的に使用されます:[view:my_view]は[view:my_view=default]と同等です
Technical Details
Hooks 1
hook_help
ヘルプページでInsert Viewモジュールのヘルプテキストを提供
Troubleshooting 4
View名とディスプレイIDが正しいことを確認してください。現在のユーザーがViewディスプレイへのアクセス権を持っているか確認してください。Viewが存在し、有効になっていることを確認してください。
引数プレースホルダー(%0、%1など)がURL構造と一致していることを確認してください。%0は最初のURLセグメントに対応することを覚えておいてください。複数の引数はスラッシュで区切る必要があります。
Insert Viewは、有効なテキストフォーマットのレンダーキャッシュを無効にします。他のコンテンツへのキャッシュの影響を最小限に抑えるため、埋め込みViewが必要なコンテンツ専用の別のテキストフォーマットを作成することを検討してください。
Viewのアクセス設定と特定のディスプレイのアクセス設定の両方を確認してください。フィルターはデフォルトディスプレイだけでなく、指定されたディスプレイのアクセスをチェックします。
Security Notes 4
- このフィルターはユーザーがアクセス権を持つ任意のViewを埋め込むことを許可するため、信頼できるユーザーロールにのみ付与してください
- このフィルターを持つユーザーは任意のディスプレイを埋め込もうとする可能性があるため、すべてのViewディスプレイ(デフォルトを含む)に適切なアクセス制御が設定されていることを確認してください
- フィルターはViewのアクセス権限を尊重しますが、適切なView設定に依存しています - 「無制限」アクセスで誤って設定されたViewは機密データを公開する可能性があります
- ユーザーが特定の引数値を作成してView出力を操作する可能性があるため、動的な引数渡しを許可することのセキュリティ上の影響を考慮してください