Как отфильтровать вид, сравнив 2 поля. Если поле-а <поле-б

18

У меня есть тип контента продукта, который имеет 2 поля цены.

Я хочу создать представление, которое показывает все продукты, где цена-А ниже, чем цена-В.

Я надеялся, что смогу просто добавить фильтр и выбрать цену-A, затем выбрать оперировать меньше и установить значение как цена-B, однако вы не можете этого сделать.

Я рассмотрел использование хука представлений, главным образом hook_views_query_alter, но мне не повезло.

Я также попытался использовать модуль Views PHP и не смог заставить его работать.

Кто-нибудь знает лучший способ добиться этого?

Fadzy
источник

Ответы:

10

То, что вы ищете, это критерии фильтра Global: Fields comparison:)

digitgopher
источник
3
Это должен быть принятый ответ.
joe_flash
4

Добро пожаловать на биржу стека ответов Drupal! На данный момент нет прямого пути к достижению этого в представлениях Drupal, и, насколько я знаю.

Вы можете сделать это с помощью модуля PHP Views . Включите этот модуль и добавьте фильтр 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 с вашим именем поля Price A и field_price_b с вашим именем поля Price B.

Я проверил, и у меня это сработало! Надеюсь, что вы можете взломать это тоже :-)

Анил Сагар
источник
Спасибо за предложение. Я все еще не могу заставить его работать с этим битом кода и использовал поля, которые появляются при выполнении dsm ($ data); Я думаю, что я мог бы просто добавить флажок и фильтровать, если флажок установлен. Спасибо за вашу помощь.
Fadzy
Между тем, это возможно с представлениями, без какого-либо специального кодирования или любого необходимого модуля.
Елин Й.
-1

http://drupal.org/project/views_dependent_filters очень полезен ...

Кнопка «Критерии фильтра» имеет новые подменю. Selfexplaning, как только вы попробуете это ...

РЕДАКТИРОВАТЬ: извините, но не для> или <, но для групп фильтров, которые могут быть разделены ИЛИ

sinini
источник
-2

Если цена является полем в вашем типе контента, в просмотрах Drupal 7 вы можете автоматически и легко выбрать компаратор полей. Я думаю, это должно сработать.

Saurav
источник