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?

Odpowiedzi:



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ć :-)


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.
Елин Й.



-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ć.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.