Як фільтрувати подання, порівнюючи 2 поля. Якщо поле-а <поле-б


18

У мене є тип вмісту товару, який має 2 цінових поля.

Я хочу створити подання, яке показує всі продукти, де ціна-A менша, ніж ціна-B.

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

Я розглядав використання гачка перегляду, в основному гак_візування_query_alter, але не пощастило.

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

Хтось знає найкращий спосіб досягти цього?

Відповіді:



4

Ласкаво просимо до обміну стеками відповідей 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;
}

Змініть field_price_a своєю назвою поля Price Price та field_price_b назвою поля B Price.

Я тестував, і це працювало на мене! Сподіваюся, ви теж можете зламати це :-)


Дякую за пропозицію. Я все ще не можу змусити його працювати з цим бітом коду і використовував поля, які з'являються під час виконання dsm ($ data); Я думаю, що я можу також додати в прапорець і також фільтрувати, якщо прапорець встановлений. Спасибі за вашу допомогу.
Fadzy

Тим часом, це можливо з переглядами, без будь-якого спеціального кодування або будь-якого внесеного модуля.
Елін Й.


-1

http://drupal.org/project/views_dependent_filters досить корисний ...

Кнопка "Критерії фільтрування" має нові підменю. Selfexplaning, як тільки ви спробуєте це ...

EDIT: вибачте, але не для> або <, а для груп фільтрів, які можуть бути відокремлені АБО


-2

Якщо ціна - це поле для вашого типу вмісту, то в переглядах Drupal 7 ви можете автоматично та легко вибрати поле для порівняння поля. Я думаю, це має спрацювати.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.