如何通过比较2个字段来过滤视图。如果字段a <字段b


18

我有一个具有2个价格字段的产品内容类型。

我想创建一个视图,以显示价格A小于价格B的所有产品。

我希望我可以只添加一个过滤器,然后选择价格-A,然后选择小于操作,并将值设置为价格-B,但是您不能这样做。

我已经研究过使用视图挂钩,主要是hook_views_query_alter,但是还没有运气。

我也尝试过使用Views PHP模块,但无法使其正常工作。

有谁知道实现此目标的最佳方法?

Answers:



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;
}

用价格A字段名称更改field_price_a,用价格B字段名称更改field_price_b。

我测试了,对我有用!希望你也能破解它:-)


谢谢你的建议。我仍然无法使用这段代码来处理它,并使用了在执行dsm($ data)时显示的字段;我想我也可能会添加一个复选框,并在选中复选框的情况下进行过滤。谢谢你的帮助。
Fadzy 2012年

同时,可以使用视图,而无需任何自定义编码或任何需要的贡献模块。
ЕлинЙ.



-2

如果价格是您内容类型中的一个字段,则在Drupal 7视图中,您可以自动轻松地选择一个字段比较器。我想这应该工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.