Como filtrar a visualização comparando 2 campos. Se campo-a <campo-b

18

Eu tenho um tipo de conteúdo de produto que possui 2 campos de preço.

Quero criar uma exibição que mostre todos os produtos em que o preço A seja menor que o preço B.

Eu esperava poder adicionar um filtro e selecionar preço-A, em seguida, escolher operar menos que e definir o valor como preço-B, no entanto, você não pode fazer isso.

Eu olhei para usar um gancho de visualizações, principalmente hook_views_query_alter, mas não tive sorte.

Também tentei usar o módulo Views do PHP e não consegui fazê-lo funcionar.

Alguém sabe a melhor maneira de conseguir isso?

Fadzy
fonte

Respostas:

10

O que você está procurando é o critério de filtro Global: Fields comparison:)

digitgopher
fonte
3
Essa deve ser a resposta aceita.
joe_flash
4

Bem-vindo ao Drupal Answers Stack Exchange! Não há uma maneira direta de conseguir isso nas visões do Drupal a partir de agora, e como eu sei.

Você pode fazer isso usando o módulo Views PHP . Habilite este módulo e adicione um filtro PHP, que você pode selecionar na categoria Global do filtro de visualizações, depois de instalar o módulo acima.

Adicione código php como abaixo na seção de código PHP do filtro.

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

Altere o field_price_a com o nome do campo Price A e o field_price_b com o nome do campo Price B.

Eu testei e funcionou para mim! Espero que você possa decifrá-lo também :-)

Anil Sagar
fonte
Obrigado pela sugestão. Ainda não consegui fazê-lo funcionar com este bit de código e usei os campos que aparecem ao fazer dsm ($ data); Acho que também posso adicionar uma caixa de seleção e filtrar se a caixa de seleção estiver marcada. Obrigado pela ajuda.
Fadzy 19/09/12
Enquanto isso, é possível com visualizações, sem qualquer codificação personalizada ou qualquer módulo contribuído necessário.
Елин Й.
-1

http://drupal.org/project/views_dependent_filters é bastante útil ...

O botão de adição de "Critérios de filtro" possui novos submenus. Autoexploração depois de experimentá-lo ...

EDIT: desculpe, mas não para> ou <, mas para grupos de filtros que podem ser separados por OR

sinini
fonte
-2

Se o preço é um campo no seu tipo de conteúdo, nas visualizações do Drupal 7, você pode escolher automaticamente e facilmente um comparador de campos. Eu acho que isso deve funcionar.

Saurav
fonte