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?

Antworten:


10

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


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


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


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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.