Come filtrare la vista confrontando 2 campi. Se campo-a <campo-b


18

Ho un tipo di contenuto del prodotto che ha 2 campi di prezzo.

Voglio creare una vista che mostri tutti i prodotti in cui il prezzo A è inferiore al prezzo B.

Speravo di poter semplicemente aggiungere un filtro e selezionare il prezzo-A, quindi scegliere di operare meno e impostare il valore come prezzo-B, tuttavia non è possibile farlo.

Ho esaminato usando un hook di viste, principalmente hook_views_query_alter ma non ho avuto fortuna.

Ho anche provato a utilizzare il modulo PHP Views e non sono riuscito a farlo funzionare.

Qualcuno conosce il modo migliore per raggiungere questo obiettivo?

Risposte:


10

Quello che stai cercando sono i criteri di filtro Global: Fields comparison:)


3
Questa dovrebbe essere la risposta accettata.
joe_flash,

4

Benvenuti nello scambio di stack di risposte Drupal! Non esiste un modo semplice per raggiungere questo obiettivo nelle viste Drupal a partire da ora, e come so.

Puoi farlo usando il modulo Views PHP . Abilita questo modulo e aggiungi un filtro filtro PHP che puoi selezionare dal filtro vista Categoria globale una volta installato il modulo sopra.

Aggiungi il codice php come qualcosa di seguito nella sezione del codice PHP del filtro.

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

Modifica field_price_a con il tuo nome campo A prezzo e field_price_b con il nome campo prezzo B.

Ho provato e ha funzionato per me! Spero che tu possa farlo anche tu :-)


Grazie per il suggerimento Non riesco ancora a farlo funzionare con questo bit di codice e ho usato i campi che compaiono quando si fa dsm ($ data); Penso che potrei anche aggiungere una casella e filtrare se la casella è selezionata. Grazie per l'aiuto.
Fadzy,

Nel frattempo, è possibile con le viste, senza alcuna codifica personalizzata o nessun modulo contributivo necessario.
Елин Й.



-2

Se il prezzo è un campo nel tuo tipo di contenuto, nelle viste Drupal 7 puoi automaticamente e facilmente scegliere un confronto di campi. Immagino che dovrebbe funzionare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.