2つのフィールドを比較してビューをフィルタリングする方法。field-a <field-bの場合


18

2つの価格フィールドがある製品コンテンツタイプがあります。

価格Aが価格B未満のすべての製品を表示するビューを作成したいと思います。

フィルターを追加して価格Aを選択し、それよりも低い値を選択して価格を価格Bに設定することを望んでいましたが、それはできません。

私はビューフック、主にhook_views_query_alterの使用を検討しましたが、運がありませんでした。

Views PHPモジュールの使用も試みましたが、動作させることができませんでした。

誰もこれを達成する最良の方法を知っていますか?

回答:



4

Drupal Answers Stack Exchangeへようこそ!今のところ、そして私が知っているように、これをDrupalのビューで達成するための直接的な方法はありません。

Views PHPモジュールを使用してこれを行うことができます。このモジュールを有効にし、上記のモジュールをインストールすると、ビューからグローバルフィルタカテゴリを選択できるフィルタPHPフィルタを追加します。

フィルターのPHPコードセクションに、以下のようなPHPコードを追加します。

$node = node_load($data->nid);

$field_a = field_get_items('node', $node, 'field_price_a');
$price_a = field_view_value('node', $node, 'field_price_a', $field_a[0]);

$field_b = field_get_items('node', $node, 'field_price_b');
$price_b = field_view_value('node', $node, 'field_price_b', $field_b[0]);

if ($price_a >= $price_b) {
  return TRUE;
}

field_price_aを価格Aのフィールド名で、field_price_bを価格Bのフィールド名で変更します。

私はテストし、それは私のために働いた!あなたもそれをクラックできることを願っています:-)


提案をありがとう。私はまだこのコードで動作させることができず、dsm($ data)を実行するときに表示されるフィールドを使用しました。私もチェックボックスを追加して、チェックボックスがチェックされている場合はフィルタリングするだけだと思います。ご協力いただきありがとうございます。
ファジー

一方、ビューでは、カスタムコーディングや提供されたモジュールは必要ありません。
ЕлинЙ.


-1

http://drupal.org/project/views_dependent_filtersは非常に便利です...

「フィルター基準」の追加ボタンには、新しいサブメニューがあります。一度試してみてください...

編集:申し訳ありませんが、>または<ではなく、ORで区切ることができるフィルタグループ


-2

価格がコンテンツタイプのフィールドである場合、Drupal 7ビューでは、フィールドコンパレーターを自動的かつ簡単に選択できます。これでうまくいくと思います。

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