So filtern Sie die Ansicht durch Vergleichen von 2 Feldern. Wenn Feld-a <Feld-b

18

Ich habe einen Produktinhaltstyp mit 2 Preisfeldern.

Ich möchte eine Ansicht erstellen, in der alle Produkte angezeigt werden, bei denen Preis A unter Preis B liegt.

Ich hatte gehofft, ich könnte einfach einen Filter hinzufügen und Preis-A auswählen, dann Operate less than auswählen und den Wert als Preis-B festlegen, aber das können Sie nicht.

Ich habe versucht, einen Views-Hook zu verwenden, hauptsächlich hook_views_query_alter, hatte aber kein Glück.

Ich habe auch versucht, das Views-PHP-Modul zu verwenden und konnte es nicht zum Laufen bringen.

Kennt jemand den besten Weg, um dies zu erreichen?

Fadzy
quelle

Antworten:

10

Was Sie suchen, sind die Filterkriterien Global: Fields comparison:)

Digitgopher
quelle
3
Dies sollte die akzeptierte Antwort sein.
Joe_Flash
4

Willkommen beim Drupal Answers Stack Exchange! Es gibt derzeit keinen direkten Weg, dies in Drupal-Ansichten zu erreichen, und wie ich weiß.

Sie können dies mit Views PHP tun Modul . Aktivieren Sie dieses Modul und fügen Sie einen Filter-PHP-Filter hinzu, den Sie nach der Installation des obigen Moduls aus der globalen Kategorie des Ansichtsfilters auswählen können.

Fügen Sie PHP-Code wie unten im Abschnitt PHP-Code des Filters hinzu.

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

Ändern Sie field_price_a mit dem Feldnamen von Preis A und field_price_b mit dem Feldnamen von Preis B.

Ich habe getestet und es hat bei mir funktioniert! Hoffe du kannst es auch knacken :-)

Anil Sagar
quelle
Danke für den Vorschlag. Ich kann es immer noch nicht mit diesem Code zum Laufen bringen und habe die Felder verwendet, die beim Ausführen von dsm ($ data) angezeigt werden. Ich denke, ich könnte auch ein Kontrollkästchen hinzufügen und filtern, wenn das Kontrollkästchen aktiviert ist. Danke für Ihre Hilfe.
Fadzy
In der Zwischenzeit ist es mit Ansichten möglich, ohne dass eine benutzerdefinierte Codierung oder ein dazu beigetragenes Modul erforderlich ist.
Елин Й.
-1

http://drupal.org/project/views_dependent_filters ist ziemlich nützlich ...

Die Schaltfläche zum Hinzufügen von "Filterkriterien" enthält neue Untermenüs. Selbsterklärend, sobald Sie es versuchen ...

EDIT: Entschuldigung, aber nicht für> oder <, sondern für Filtergruppen, die durch OR getrennt werden können

sinini
quelle
-2

Wenn price ein Feld in Ihrem Inhaltstyp ist, können Sie in Drupal 7-Ansichten automatisch und einfach einen Feldvergleich auswählen. Ich denke, das sollte funktionieren.

Saurav
quelle