web-dev-qa-db-ja.com

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

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

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

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

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

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

D7と同様に、nameという用語も使用できるようにしたいと思います。機能が不足していますか、それともビューを別の方法で構成する必要がありますか?

19
gbyte.co

D8ビューのTerm名は、Term IDフィルターに変換されます 欠落しているように見えます

1つのサイトビルダーの回避策は、RelationshipTaxonomy terms on nodeを追加してから、 分類用語:名前フィルターからコンテキストフィルター前述の関係を使用します。 Specify validation criteriaチェックボックスをオンにして、Validatorに設定しますname&フィルターする適切なTaxonomyをチェックします。

20
Shawn Conn

完了のために、質問を書いているときに、この問題を回避するために、分類用語名を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;
      }
    }
  }
}
3
gbyte.co

in Drupal 8このモジュールをチェック Views Taxonomy Term Name Depth

このモジュールは、次の画像のようなコンテキストフィルターのプラグインを提供します... enter image description here

3
user21513

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

  • ビュー構成内で、[詳細設定]-> [関係]の下にある[追加]をクリックします。
  • 次に、「ノードの分類用語」を選択します
  • 次の画面で「タグ」語彙を選択し、関係を要求します。
  • 次に、[詳細設定]-> [コンテキストフィルター]で、[追加]をクリックします。
  • [フィルターを使用できない場合]で、[デフォルト値を提供する]、[URLからの生の値]を選択します。必要に応じてその他のオプションを選択します。
  • 「When Filter IS available or a default value is provided」の下で、「Specify Validation Criteria」を選択し、「Taxonomy Term Name」をバリデーターとして選択します。「tags」ボキャブラリーを選択して、「Apply」をクリックします。

お役に立てば幸いです。

2
axlroach

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

1
Todd Bloom

私は不足している機能を復元し、これを再び適切に機能させるための小さなモジュールを書きました:

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

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

お楽しみください-Derek(dww)

1
Derek

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

私はDrupal 8とジルコンを使用しています。私は真新しいので、間違った用語を使用する可能性があります。カテゴリに基づいて「パネルの最初の列1」にコンテキスト画像リンクを作成したかった誰かがいるページです。私が行ったのは、構造>ビュー>カルーセル(そのブロック領域に画像があるビュー)>詳細設定>コンテキストフィルターで追加>分類用語IDがあります>デフォルト値の指定:分類で選択しました。 URLからの用語ID(これは私には意味がありませんが)>次に、3つのボックスすべてをオンにしました:用語ページからデフォルトフィルターをロード、ノードページからデフォルトフィルターをロード、これは関連する分類ブロックに適しています、語彙によって用語を制限します。語彙カテゴリーを調べました。

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

1
seizethecarp

@kiethmはこれに対処する正しい方法を提供しています-コンテキストフィルターの下で選択する必要があります '名前' ではなく 「分類用語ID」 次に、使用する検証基準を設定します 「分類用語名」

1
flamesquirrel

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

enter image description here

0
Adi

Drupal-8でこれを実現するには、「分類用語:名前」のコンテキストフィルターを使用します。

次に、デフォルト値を入力しますType Taxonomy Term ID From Url

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

enter image description here

0
Rimi B