「Ingredients」という名前の段落タイプフィールドを含む「Lunch」というコンテンツタイプがあります。これは、「Ingedients」という名前のprapgraphタイプを格納する複数の値フィールドです=>分類用語+数量
[〜#〜]ランチ[〜#〜]
|-Ingredient1(Term1参照+数量1)
|-Ingredient2(Term2参照+数量2)
私は3つのエンコードされたランチのタイルを表示するビューを作成しました。ここまではすべて順調です。
ここで、特定の成分が含まれているすべてのランチを取得するために、露出フィルターを追加したいと思います。このため、成分フィールドに関係を追加しました。
Paragraph referenced from field_ingredients
これで問題ありません。これは、この関係を使用して公開フィルターを追加できるためです。
そして
これを行うのは悪いことです。この関係を追加するとすぐに、ビューの行数が成分の数で乗じられたためです... SQLパラメータで個別にチェックしても
この問題を解決するためのヒントはありますか?
追加して編集:hook_views_pre_render
の重複を削除することでこれを解決できますが、これは本当に最善の方法ですか?
prkosの回答に基づく実際のソリューション:
1-事前に>その他のセクション集約を有効にしました
2-フィールドセクションに[材料]フィールドを追加しました(表示から除外します)
=>これは、「Ingedients」という名前の段落フィールドの分類基準フィールドです。つまり、2つのフィールド(成分と量)を持つ段落タイプがあり、「成分」を選択しました。段落自体は選択しないでください。
3-この追加されたフィールドの集約パラメーターで、ID of the entity
を選択しました
リレーションシップを追加すると、結果に行が重複することがよくあります。
ビューの集計を使用して重複を「削除」できます(Advanced
で有効化)。
次に、一部のフィールドの集約設定、特にGroup column
オプションを調整します。 Value
からEntity ID
に、またはその逆に変更する必要がある場合があります。設定の正確な組み合わせは、特定のケースによって異なります。段落では試していません。
関係を使用している分類基準フィールドを通じて重複が導入される場合、それらのすべての分類フィールドには、Value
ではなくエンティティIDが必要です。
フィールドが直接エンティティ参照フィールドであり、Relatinshipを使用していない場合、この場合もtarget_id
ではなく、Entity IDである必要があります。
集計を使用するときは、並べ替え条件に注意してください。集計の一部が台無しになる可能性があります。 Aggreationを調整するときにすべてのソート基準を削除し、それが機能しているときにそれらを追加して、すべてが期待どおりに機能していることをテストするのが最善です。
一部のモジュールは、より高度な集計設定を提供します。たとえば、必要に応じて、次のように調べてみてください。 Views Aggregator Plus 、