Jak filtrować widok, porównując 2 pola. Jeśli pole-a <pole-b

18

Mam typ zawartości produktu, który ma 2 pola cenowe.

Chcę stworzyć widok, który pokazuje wszystkie produkty, w których cena A jest niższa niż cena B.

Miałem nadzieję, że mogę po prostu dodać filtr i wybrać cenę-A, a następnie wybrać działanie mniejsze niż i ustawić wartość jako cenę-B, jednak nie można tego zrobić.

Przyglądałem się użyciu haka widoków, głównie hook_views_query_alter, ale nie miałem szczęścia.

Próbowałem również użyć modułu Widoki PHP i nie udało mi się go uruchomić.

Czy ktoś zna najlepszy sposób na osiągnięcie tego?

Fadzy
źródło

Odpowiedzi:

10

To, czego szukasz, to kryteria filtrowania Global: Fields comparison:)

digitgopher
źródło
3
To powinna być zaakceptowana odpowiedź.
joe_flash
4

Witamy na Drupal Answers Stack Exchange! Obecnie nie ma bezpośredniego sposobu na osiągnięcie tego w poglądach Drupala, o czym wiem.

Możesz to zrobić za pomocą modułu Views PHP . Włącz ten moduł i dodaj filtr PHP z filtrem, który możesz wybrać z widoku Filtruj kategorię globalną po zainstalowaniu powyżej modułu.

Dodaj kod php coś takiego jak poniżej w sekcji kodu PHP filtra.

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

Zmień cenę pola fielda za pomocą nazwy pola Price A i field_price_b nazwą pola Price B.

Przetestowałem i zadziałało dla mnie! Mam nadzieję, że też możesz to złamać :-)

Anil Sagar
źródło
Dzieki za sugestie. Nadal nie jestem w stanie uruchomić go z tym bitem kodu i użyłem pól, które pojawiają się podczas wykonywania dsm ($ data); Myślę, że mogę dodać pole wyboru i filtrować, jeśli pole wyboru jest zaznaczone. Dzięki za pomoc.
Fadzy,
Tymczasem jest to możliwe dzięki widokom, bez żadnego niestandardowego kodowania ani żadnego potrzebnego modułu.
Елин Й.
-1

http://drupal.org/project/views_dependent_filters jest bardzo przydatny ...

Przycisk „Kryteria filtrowania” ma nowe propozycje. Samoplanowanie po wypróbowaniu ...

EDYCJA: przepraszam, ale nie dla> lub <, ale dla grup filtrów, które mogą być oddzielone przez OR

sinini
źródło
-2

Jeśli cena jest polem w twoim typie treści, w widokach Drupala 7 możesz automatycznie i łatwo wybrać komparator pola. Myślę, że to powinno zadziałać.

Sauraw
źródło