Views URL alias

コンテンツエンティティのパスエイリアスでViewsのフィルタリングとソートを可能にします。

views_url_alias
1,503 sites
20
drupal.org
Drupal 8 Drupal 9 Drupal 10 Drupal 11

インストール

Drupal 11, 10, 9, 8 v3.1.2
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
Viewsエイリアステーブルの再構築 /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
URLエイリアスがViewsフィルターに表示されない

views_url_aliasテーブルが同期していない可能性があります。管理 > サイト構築 > Views > 設定 > Viewsエイリアステーブルの再構築に移動し、「テーブルを再構築」をクリックしてエイリアスデータを再設定してください。

新しく作成したエイリアスがViewsに表示されない

パスエイリアスが通常のDrupalインターフェースを通じて作成されたことを確認してください。エイリアスがインポートされたか、直接データベース操作で作成された場合は、views_url_aliasテーブルを再構築する必要があります。

自分のエンティティタイプでURL Aliasリレーションシップが利用できない

モジュールは数値IDを持つコンテンツエンティティのみをサポートしています。文字列IDを持つカスタムエンティティはサポートされていません。また、エンティティタイプにデータテーブルが定義されていることを確認してください。

大量のエイリアスでパフォーマンスの問題が発生

モジュールは効率的なクエリのためにインデックス付きデータベースカラムを維持しています。遅延が発生する場合は、views_url_aliasテーブルにデータベースインデックスが存在することを確認してください。Viewsクエリの最適化も必要かもしれません。