ビューのコンテキストフィルターとしての分類用語名


18

D7では、URLから取得した分類用語に従ってビューをフィルター処理できました。例はこのURLです

http://www.gbyte.co/tags/drupal-planet/rss.xml

「drupal-planet」は分類用語IDに変換され、それに応じてビューの結果がフィルタリングされます。

コンテキストフィルター「Content:Tags(field_tags)」を使用して、対応するD8ビューを設定しました。field_tagsは分類フィールドです。ただし、次のように実際の用語IDをURLに渡すと、D8ビューには結果が表示されます。

http://www.gbyte.co/tags/9/rss.xml

D7のように用語名でも動作するようにしたいと思います。機能が欠落していますか、またはビューを別の方法で構成する必要がありますか?


これに関するニュースはありますか?私は同じ問題を抱えている
のJeroen

回答:


20

ターム名は用語のIDに変換フィルタ行方不明になりそうだ D8ビューのために。

サイトビルダーの回避策の1つは、ノードにRelationshipTaxonomyの用語を追加してから、前述の関係を使用して、Taxonomy Term:NameフィルターをContextual Filtersに追加することです。[ 検証条件指定]チェックボックスをオンにし、バリデーター分類用語名に設定し、適切な分類をチェックしてフィルターします。


12
D8のサイトビルダーの落とし穴は、コンテキストフィルターUIを追加します。コンテキストフィルターのタイトルは「名前」で、カテゴリは「分類用語」です。「分類」を検索しても、カテゴリではなくタイトルと説明のみが検索されるため、このフィルタのリストに失敗します。
-keithm

1
また、コンテキストフィルターの設定でタイトル上書きできます{{ arguments.name }}
cptstarling

3

Drupal 8でこのモジュールを確認ビュー分類学用語名深さ

このモジュールは、次の画像のようにコンテキストフィルターのプラグインを提供します... ここに画像の説明を入力してください


3

完成のために、質問を書いている時点で、URLの分類用語名をviews_hook_pre_view()の用語IDに変換し、それをコンテキストフィルターの入力として使用することで、この問題を回避することができました。分類IDを受け入れます。

ビューフックのコードは次のとおりです。

/**
 * Implements hook_views_pre_view().
 */
function my_module_views_pre_view(\Drupal\views\ViewExecutable $view, $display_id, array &$args) {
  if ($view->id() == 'blog' && $display_id == 'feed') {
    if (isset($args[0])) {
      $term = taxonomy_term_load_multiple_by_name($args[0], 'tags');
      if (empty($term)) {
        $term = taxonomy_term_load_multiple_by_name(str_replace("-", " ", $args[0]), 'tags');
      }
      if (!empty($term)) {
        $tid = key($term);
        $args[0] = $tid;
      }
    }
  }
}

2

Shawn Connの答えを拡張するには:

  • ビュー構成内で、「詳細」->「関係」の下にある「追加」をクリックします。
  • 「ノード上の分類用語」を選択します
  • 次の画面で「タグ」ボキャブラリーを選択し、関係を要求します。
  • [詳細]-> [コンテキストフィルター]で[追加]をクリックします。
  • 「フィルターが使用できない場合」で、「デフォルト値を提供する」、「URLからの生の値」を選択します。ニーズに適した他のオプションを選択します。
  • 「フィルターが使用可能な場合、またはデフォルト値が提供されている場合」で、「検証基準の指定」を選択し、バリデーターの「分類用語名」を選択します。「タグ」ボキャブラリーを選択して、「適用」をクリックします。

お役に立てば幸いです!


1

この問題がまだ発生するかどうかはわかりませんが、目的の分類用語を使用して「ノード上の分類用語」の関係を作成し、「分類用語:名前」の関係を使用してコンテキストフィルターを作成できました。 TIDではなく名前に基づいて検証します。


2
この質問で説明したのと同じ問題がありますが、もっと明確にできますか。すでに関係を設定していますが、コンテキストフィルターは用語名ではなくtidでのみ機能します。もちろん、D8について話します。前もって感謝します。
ヴァグナー

1

@kiethmはこれにアプローチする正しい方法を提供しました-コンテキストフィルターでは、「分類用語ID」ではなく名前」を選択し、「分類用語名」を使用するように検証基準を設定する必要があります。


1

ちょっと私はしばらくの間、この答えを探していました。それを機能させる方法を探している私のような他の人のために、私はこことdrupal.orgの結果から、そしてまた以下からも成功への道を踏み出しました:http ://redcrackle.com/blog/adding-contextual-filter -view-drupal-8

Drupal 8とZirconを使用しています。私は真新しいので、間違った用語を使うかもしれません。誰かがいるページのカテゴリに基づいて、「Panel first col 1」でコンテキスト画像リンクを作成したかった。私がやったことは、構造>ビュー>カルーセル(そのブロック領域に写真があるビュー)>詳細>コンテキストフィルターで追加>分類用語IDを持っている> URLからの分類用語IDの提供で選択しました私には何の意味もありません)>その後、3つのボックスすべてをチェックしました:用語ページからデフォルトフィルターをロード、ノードページからデフォルトフィルターをロード、関連する分類ブロックに適しています、用語を用語で制限します。次に、語彙について、カテゴリをチェックしました。

PHEW!最後に!私を正しい方向に向けてくれてありがとう。なぜそれが完全に機能するのか説明できませんでしたが、何であれ、機能し、私は雇用され続けます。


1

不足している機能を復元し、これを再び正常に機能させるための小さなモジュールを作成しました。

https://www.drupal.org/project/views_taxonomy_term_name_into_id

ビューの「コンテキストフィルター」で使用される分類用語の「用語名をIDに変換」引数バリデーターを再追加します。詳細と手順については、プロジェクトのページをご覧ください。

お楽しみください、デレク(dww)


0

コンテンツを追加することでそれを行うことができますコンテキストフィルターに分類用語IDがあり、フィルター条件を調整することでコンテキストで分類を使用できます

ここに画像の説明を入力してください


D7インストールからスクリーンショットを撮りました。D8には、「分類用語」バリデーターはありません。代わりに、「分類用語ID」または「分類用語名」があり、どちらもURLから分類名を受け入れません。IDのみを受け入れます。
gbyte.co

0

Drupal-8では、「分類用語:名前」のコンテキストフィルターを使用してこれを達成しました。

次に、デフォルト値を入力します。

次に、次の検証基準を指定します。

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.