web-dev-qa-db-ja.com

ビューをフィールドでグループ化し、下の行の結果を表示する方法は?

コンテンツタイプ_Basic Page_があります。これは、分類用語フィールド_Page Type_によってグループ化されることになっており、ビューでは以下の値になります。

ビューが1つのグループに_Page Type_を表示し、別のグループに結果を表示するようにビューを設定するにはどうすればよいですか?これはhook_preprocess_hook()またはカスタムtwigテンプレートなしでも可能ですか?

ビュー設定:

  • ディスプレイ:ブロック( `block_1 ')
  • フォーマット:未フォーマット
  • フォーマット設定:グループ化フィールドnr。 1:_Page Type_、_User rendered output to group rows = true_
  • 表示:フィールド
  • 設定の表示:インラインフィールド-> _Page Type_
  • フィールド:_Page Type_、Title、_field_description_
  • フィルター基準:_Published = true_、_Content type = Basic Page_
  • 並べ替え基準:Page Type (asc)

_Page Type_値:

  • ブログ
  • プレスリリース
  • ビデオ
  • 資料

現在の結果:

_<section class="views-content">
  <div class="view-row">
    <div> Blog </div>
    <h3> Page Title1 </h3>
    <div> Continually negotiate bleeding-Edge materials through installed.</div>
  </div>
  <div class="view-row">
    <div> Blog </div>
    <h3> Page Title2 </h3>
    <div> Collaboratively disseminate global customer service for..</div>
  </div>
  <div class="view-row">
    <div> Blog </div>
    <h3> Page Title3 </h3>
    <div> Continually evolve enterprise-wide total linkage through..</div>
  </div>
  <div class="view-row">
    <div> Press Release </div>
    <h3> Page Title4 </h3>
    <div> Energistically productize competitive sources after standards..</div>
  </div>
  <div class="view-row">
    <div> Video </div>
    <h3> Page Title5 </h3>
    <div>Professionally implement principle-centered portals without efficient..</div>
  </div>
  <div class="view-row">
    <div> Video </div>
    <h3> Page Title6 </h3>
    <div> Uniquely fabricate high-quality testing procedures with..</div>
  </div>
</section>
_

望ましい結果:

_<section class="views-content">
  <div class="view-groups">
    <div> Blog </div>
    <div> Press Release </div>
    <div> Video </div>
  </div>
  <div class="view-row">
    <h3> Page Title1 </h3>
    <div> Continually negotiate bleeding-Edge materials through installed.</div>
  </div>
  <div class="view-row">
    <h3> Page Title2 </h3>
    <div> Collaboratively disseminate global customer service for..</div>
  </div>
  <div class="view-row">
    <h3> Page Title3 </h3>
    <div> Continually evolve enterprise-wide total linkage through..</div>
  </div>
  <div class="view-row">
    <h3> Page Title4 </h3>
    <div> Energistically productize competitive sources after standards..</div>
  </div>
  <div class="view-row">
    <h3> Page Title5 </h3>
    <div>Professionally implement principle-centered portals without efficient..</div>
  </div>
  <div class="view-row">
    <h3> Page Title6 </h3>
    <div> Uniquely fabricate high-quality testing procedures with..</div>
  </div>
</section>
_
1
usernameabc

あなたが達成しようとしているのは、フィールドでグループ化するのではなく、同じノードリストを2回表示して、2つのインスタンスの異なるノード情報を示しています。

同じフィルターを共有しながら、ビューに2つのディスプレイを作成して、1つはPage Typeフィールドのみを表示し、もう1つはTitlefield_descriptionを表示することで実現できます。

元のビューがページ表示である場合、他のビューに添付ファイル表示を使用することは理にかなっています。最初に作成したものに応じて、他の表示結果の前または後に表示されるように添付ファイルを調整します。また、それらの一方または両方をブロック表示にして、テーマのコンテンツ領域で上下に配置することもできます。

追加のモジュール Views Field View を使用して、1つのビューディスプレイを別のディスプレイヘッダーにレンダリングすることもできます。

HTMLは質問とまったく同じにはなりませんが、十分に近いので、特定のビュー表示のテーマのテンプレートをオーバーライドして、希望する出力を正確に実現できます。アタッチメントビューは通常、独自のクラスと、それらがアタッチされているディスプレイのview-rowの外側の.views-contentsで表示されますが、本当に必要な場合は、オーバーライドして独自のクラスを設定できます。

Drupal 7ソリューションからの描画

Drupal 7: 別のビューのリンクをクリックしてビューをフィルタリングする に対する同様の質問への回答を投稿しました。これはD8に完全にはミラーリングしませんが、露出フィルターの改善自動送信オプチンを使用して[送信]ボタンを非表示にすると、露出フィルターの動作をタブと同じにすることができます。

コンテキストフィルターによる分類の概要

ビューの結果でノードで使用されている用語のみを一覧表示するもう1つの方法は、コンテキストフィルターを使用して概要を作成することです。

  1. コンテンツビューページで、Page Typeフィールドにリレーションシップを追加します。どの結果にも空ではないため、必要になる場合があります。
  2. 次に、コンテキストフィルターTerm IDTaxonomy termカテゴリから追加し、上記の関係と次のオプションを使用するように設定します。
    When the filter value is NOT in the URL
    要約を表示
    降順
    レコード数
    Base path(これがビューの最初のページ表示でない場合)
  3. このページに添付ファイルビューの表示を追加し、すべてのオプションをページと同じに保ち、コンテキストフィルターのみをオーバーライドして、添付ファイルから削除します。

このようにして、結果に関連する用語の後に、ノードの元のリストを取得します。

用語はタグ付けされた結果の数ですでにソートされています。添付ファイル内のノードを同じ方法でソートするには、その上で集約を使用します。

3
prkos