Views URL alias
コンテンツエンティティのパスエイリアスでViewsのフィルタリングとソートを可能にします。
views_url_alias
インストール
composer require 'drupal/views_url_alias:^3.1'
概要
Views URL aliasモジュールは、URLパスエイリアスによるViewsのフィルタリングとソートを可能にします。これは階層的なURL構造を使用するウェブサイトで特に有用で、URLパターンに基づいてサイトの特定セクションからコンテンツを表示するViewsを作成できます。
このモジュールは、エンティティIDと対応するURLエイリアスをマッピングする専用のviews_url_aliasデータベーステーブルを作成・維持します。この専用テーブルにより、コンテンツエンティティテーブルとパスエイリアス間のクリーンで高速な結合が提供され、最適なクエリパフォーマンスが確保されます。
Node、Taxonomyターム、ユーザー、およびカスタムコンテンツエンティティタイプを含む、URLエイリアスを持つすべてのコンテンツエンティティがサポートされています。また、Pathautoモジュールと一括エイリアス操作でシームレスに統合されます。
Features
- すべてのコンテンツエンティティタイプに対してURLエイリアスのViewsリレーションシップを提供
- URLエイリアスパターンによるViewsのフィルタリングが可能(例:/products/*配下のすべてのコンテンツを表示)
- URLエイリアスによるViewsのアルファベット順ソートが可能
- 高速で効率的な結合のための専用views_url_aliasデータベーステーブルを維持
- エイリアスの作成、更新、削除時にエイリアステーブルを自動的に同期
- 一括エイリアス更新のためのPathautoモジュールとの完全な統合
- 言語別エイリアス追跡による多言語サポート
- 必要時にエイリアステーブルを再構築するための管理インターフェース
- Views Bulk Operations(VBO)との組み合わせにより、URLパスに基づいてコンテンツに操作を適用可能
Use Cases
URL階層でコンテンツをフィルタリング
特定のパスパターンで始まるURLを持つすべてのNodeを表示するViewを作成します。たとえば、「Node URL Alias」リレーションシップを追加し、エイリアスフィールドを「/documentation/で始まる」でフィルタリングすることで、/documentation/*配下のすべてのコンテンツを表示できます。
セクション固有のコンテンツリストを構築
ウェブサイトの特定セクションからコンテンツを表示します。コンテンツViewにURL Aliasリレーションシップを追加し、エイリアスに「/products/」を含むフィルターを適用して、製品関連ページのみを表示します。
URLでコンテンツをアルファベット順にソート
URLパスでコンテンツがアルファベット順にソートされるサイトマップスタイルのViewを作成します。URL Aliasリレーションシップを追加し、エイリアスフィールドでソートします。
URLベースのコンテンツセクションへの一括操作
Views Bulk Operationsと組み合わせて、URLパターンに基づいてコンテンツにアクションを実行します。エイリアスパターンでフィルタリングされたViewを作成し、VBOフィールドを追加して、公開、非公開、コンテンツ所有者の変更などの一括操作を適用します。
多言語URLフィルタリング
言語固有のURLエイリアスでコンテンツをフィルタリングします。モジュールは言語ごとにエイリアスを追跡するため、特定の言語で特定のエイリアスパターンを持つコンテンツを表示するViewを作成できます。
Tips
- URLエイリアスフィルタリングでViewを設定する場合、最初に適切なエンティティタイプのURL Aliasリレーションシップを追加してください(例:Nodeの場合は「Content URL Alias」)
- URLエイリアスが定義されているコンテンツのみを表示したい場合は、「このリレーションシップを必須にする」オプションをオンにしてください
- /products/*のような階層的なURLパターンにマッチさせるには「で始まる」フィルター演算子を使用してください
- Pathautoでの一括エイリアス操作後、フィルタリングされたViewsを確認してviews_url_aliasテーブルが最新であることを確認してください
- モジュールはインストール中にエイリアステーブルを自動的に再構築するため、既存のエイリアスはすぐに利用可能です
Technical Details
Admin Pages 1
/admin/structure/views/settings/alias
この確認フォームにより、管理者はviews_url_aliasデータベーステーブルを再構築できます。この操作は既存のテーブルを削除し、システムからすべての現在のパスエイリアスで再設定します。これは通常、直接のデータベース操作やインポートなど、通常のエイリアス編集フォーム外でURLエイリアスが更新された場合にのみ必要です。
Hooks 5
hook_ENTITY_TYPE_insert (path_alias)
新しいパスエイリアスが作成されたときに、views_url_aliasテーブルにパスエイリアスを挿入します。
hook_ENTITY_TYPE_update (path_alias)
パスエイリアスが変更されたときにviews_url_aliasテーブルを更新します。
hook_ENTITY_TYPE_delete (path_alias)
パスエイリアスが削除されたときにviews_url_aliasテーブルから対応するエントリを削除します。
hook_pathauto_alias_alter
一括更新操作中にエイリアスを保存するためにPathautoモジュールと統合します。
hook_views_data
views_url_aliasテーブルを定義し、すべてのコンテンツエンティティタイプに対するリレーションシップを作成することでViews統合を提供します。
Troubleshooting 4
views_url_aliasテーブルが同期していない可能性があります。管理 > サイト構築 > Views > 設定 > Viewsエイリアステーブルの再構築に移動し、「テーブルを再構築」をクリックしてエイリアスデータを再設定してください。
パスエイリアスが通常のDrupalインターフェースを通じて作成されたことを確認してください。エイリアスがインポートされたか、直接データベース操作で作成された場合は、views_url_aliasテーブルを再構築する必要があります。
モジュールは数値IDを持つコンテンツエンティティのみをサポートしています。文字列IDを持つカスタムエンティティはサポートされていません。また、エンティティタイプにデータテーブルが定義されていることを確認してください。
モジュールは効率的なクエリのためにインデックス付きデータベースカラムを維持しています。遅延が発生する場合は、views_url_aliasテーブルにデータベースインデックスが存在することを確認してください。Viewsクエリの最適化も必要かもしれません。