Views Taxonomy Term Name Depth

タクソノミータームの名前による階層深度対応のフィルタリングを可能にするViewsコンテキストフィルタープラグインを提供します。

views_taxonomy_term_name_depth
8,597 sites
39
drupal.org

インストール

Drupal 11, 10, 9 v7.3.1
composer require 'drupal/views_taxonomy_term_name_depth:^7.3'
Drupal 8 v7.0.2
composer require 'drupal/views_taxonomy_term_name_depth:^7.0'

概要

Views Taxonomy Term Name Depthモジュールは、タクソノミーベースのコンテンツフィルタリング用の特殊なコンテキストフィルター(引数)プラグインでDrupal Viewsを拡張します。タームIDで動作するコアのタクソノミーフィルターとは異なり、このモジュールは人間が読みやすいターム名でフィルタリングできるため、URLフレンドリーなパスに最適です。

このモジュールは2つの主要なViewsプラグインを提供します:深度トラバーサル付きでタクソノミーターム名によるコンテンツフィルタリングを行う引数ハンドラー(親タームと子タームの両方の階層をサポート)と、現在のページコンテキストからタクソノミーの親IDを自動抽出する引数デフォルトプラグインです。

Pathautoモジュールとの統合により、インテリジェントなURLエイリアスマッチングが可能になり、特殊文字やフォーマットの違いに関係なく、URL内のターム名が実際のタクソノミータームと一致できます。これにより、SEOフレンドリーで階層的なタクソノミーベースのコンテンツリスティングを作成する際に特に強力なモジュールとなります。

Features

  • タームIDではなくタクソノミーターム名でコンテンツをフィルタリングするViewsコンテキストフィルター(引数)プラグイン。URLフレンドリーなフィルタリングを実現
  • 正の深度値で子タームを含め、負の深度値で階層内の親タームを含める階層深度サポート
  • エイリアスクリーナーサービスを使用したインテリジェントなURLエイリアスマッチングのためのPathautoモジュールとの統合
  • 特定のボキャブラリーへのターム一致制限。異なるボキャブラリー間で同名のタームがある場合の競合を防止
  • カンマまたはプラス区切りのターム名(1+2+3形式)による複数タクソノミータームでのフィルタリングをサポートする複数値対応
  • 現在のURLコンテキスト(タクソノミータームページまたはノードページ)からタクソノミーの親タームIDを抽出するViews引数デフォルトプラグイン
  • 現在のノードページからタクソノミー参照を読み込む関連コンテンツブロック機能
  • 最適なパフォーマンスのためのURLベースのキャッシュコンテキストを備えたキャッシュ対応実装

Use Cases

SEOフレンドリーなカテゴリページ

URLフレンドリーなタクソノミーターム名でコンテンツをフィルタリングするViewを作成します。例えば、/products/electronicsのようなURLは「Electronics」タームでタグ付けされた製品をフィルタリングし、PathautoがURLエイリアス変換を処理します。

階層的な製品カタログ

親カテゴリ(例:「Clothing」)を表示すると、正の深度値を設定することで子カテゴリ(「Shirts」、「Pants」、「Accessories」)の製品も自動的に含まれる製品リスティングを構築します。

親カテゴリナビゲーション

子タームページ(例:「Smartphones」)を表示する際に、負の深度値を使用して親カテゴリ(「Electronics」、「Technology」)のコンテンツも表示するパンくずスタイルのナビゲーションやカテゴリランディングページを作成します。

関連コンテンツブロック

Taxonomy term parent ID from URL引数デフォルトを使用して、ノードページに関連コンテンツブロックを表示します。ブロックは現在のノードとタクソノミータームを共有するコンテンツを自動的に表示します。

マルチボキャブラリーフィルタリング

同じターム名が複数のボキャブラリーに存在する場合(例:「News」がコンテンツタイプカテゴリとニュースセクショントピックの両方に存在)に、特定のボキャブラリー間でコンテンツをフィルタリングします。

タグベースのコンテンツ集約

break_phraseオプションを有効にしてURL経由で複数タグフィルタリングを許可し、/topics/drupal+php+web-developmentのようなURLでそれらのタームのいずれかでタグ付けされたコンテンツを表示します。

Tips

  • 最良の結果を得るためにPathautoモジュールを使用してください。「web-development」のようなURLエイリアスが「Web Development」という名前のタームと正しく一致することを保証します
  • 異なるボキャブラリー間で同じ名前のタームがある場合は、意図しないマッチングを避けるためにボキャブラリー制限を設定してください
  • 大規模なタクソノミーでは正の深度値を控えめに使用してください。各深度レベルがデータベースクエリにJOIN操作を追加します
  • 「複数の値を許可」オプションはクエリの複雑さによりANDをORとして扱います。厳密な交差ではなく広範なフィルタリングに使用してください
  • 関連コンテンツブロックには、taxonomy_tpid引数デフォルトをURLキャッシュコンテキストを使用した適切なキャッシュ戦略と組み合わせてください
  • 深度設定を慎重にテストしてください。深度0は完全一致のみ、深度1は直接の子を含み、深度2は孫を含みます。以降同様です

Technical Details

Hooks 1
hook_views_data_alter

ノードコンテンツフィルタリング用のカスタムtaxonomy_index_name_depth引数プラグインを登録するためにViewsデータを変更します。

Troubleshooting 4
コンテキストフィルターが一致するタームを見つけられない

Pathautoがインストールされていること、URL内のターム名がタクソノミータームのPathautoでクリーニングされたバージョンと一致していることを確認してください。タームが複数のボキャブラリーに存在する場合はボキャブラリー制限を確認してください。

深度フィルタリングで結果が多すぎる、または少なすぎる

深度値が正しく設定されていることを確認してください。深度0は完全一致のみ、正の値は子を含み、負の値は親を含みます。インクリメントごとに階層の1レベルが追加されます。

深い階層でのパフォーマンス問題

大きな深度値は複数のJOIN操作を作成します。深度を2〜3レベルに制限するか、ボキャブラリー制限を使用してクエリスコープを縮小することを検討してください。

複数の値が期待通りに動作しない

「複数の値を許可」が有効な場合、AND操作はORとして扱われます。厳密なANDフィルタリングが必要な場合は、代わりに複数のコンテキストフィルターの使用を検討してください。