web-dev-qa-db-ja.com

URLにない分類用語を含むコンテキストフィルター

誰かがコンテキストフィルターと呼ばれる獣を飼いならすのを手伝ってくれるといいのですが。 :)すべてに特定の分類用語が割り当てられた一連のノードがあります(すべて同じ語彙から)。ただし、URLパスにはこれらを含めません。

例えば:

語彙名=動画

ノードには条件があります:

-food
--vegetable
---carrot 

それに割り当てられていますが、私が欲しい唯一のURLは:

site.com/videos/title-of-node

そして、それらに関する用語を持つ他のすべてのノードはすべて「videos」ディレクトリの下にあります:

site.com/videos/title-of-another-node
site.com/videos/title-of-yet-another-node

ニンジンの用語を持つノードのみを表示するコンテキストフィルターを持つビューを作成しました。そして、それはビューページでプレビューすると完全に機能しますが、実際のページをロードするとき、「WHEN THE FILTER VALUE IS = URLにありません->指定したフィールドのすべての結果を表示します

私の主な問題は、「コンテキストフィルター値はURLによって提供される」ということです。そして、私の言葉はURLにありません。したがって、どういうわけか、各ノードに関連付けられている用語を取得する必要があります。

どんな助けでも大歓迎です!

7
Dan

ノードビューを作成する代わりに、分類法ビューを作成します。

その中で2つの関係を提供します。

  1. 分類用語:用語を含むコンテンツ。
  2. 分類用語:{コンテンツタイプの分類フィールドの名前} *を使用するコンテンツ。
  3. タイプContent:Title;のコンテキストフィルターを追加します。コンテキストフィルターの最初の関係を使用します。小文字のターンスペースからダッシュへの変更など、moreオプションで必要な変更を行います。
  4. 関係を2に設定して、コンテンツの必須フィールドを追加します。

準備できた。

EDIT:ディスカッションに従って、用語とそのサブ用語の下のノードも表示する必要がありました。

  1. タイプコンテンツのビューを作成します。

  2. 必須フィールドを追加します。

  3. タイプコンテンツのコンテキストフィルターを追加します:分類用語ID(深さあり)を持ち、分類にある階層と同じ深さの値の深さを選択します。

これで、用語idを入力として渡すと、子ノードを含む、その分類用語の下のすべてのノードが表示されます。

URLを用語IDではなく用語名に変更する場合は、次の手順を実行します。

  1. ビューでは、パスをtaxonomy/term /%として指定すると、デフォルトの分類パスが上書きされます。

  2. インストール Pathauto モジュールこれは依存する Tokens モジュールなので、それもインストールする必要があります。

  3. [設定]-> [URLエイリアス]には、パターと呼ばれるタブがあります。

  4. 「TAXONOMY TERM PATHS」のパターンを希望どおりに設定します。最後の値が[term:name]であることを確認してください。パスをcategory/carrotにする場合は、category/[term:name]として指定してください。

  5. 分類用語をすでに追加している場合は、URLエイリアスページのタブである「一括更新」を実行する必要があります。

これで、ページのカテゴリ/用語名にアクセスすると、子用語を含む用語の下のすべてのノードが表示されます。

8