Cómo filtrar la vista comparando 2 campos. Si campo-a <campo-b

18

Tengo un tipo de contenido de producto que tiene 2 campos de precio.

Quiero crear una vista que muestre todos los productos donde el precio-A es menor que el precio-B.

Esperaba poder agregar un filtro y seleccionar el precio A, luego elegir operar menos y establecer el valor como precio B, sin embargo, no puede hacerlo.

He buscado usar un gancho de vistas, principalmente hook_views_query_alter, pero no he tenido suerte.

También he intentado usar el módulo PHP Vistas y no he podido hacer que funcione.

¿Alguien sabe la mejor manera de lograr esto?

Fadzy
fuente

Respuestas:

10

Lo que estás buscando es el criterio de filtro Global: Fields comparison:)

digitgopher
fuente
3
Esta debería ser la respuesta aceptada.
joe_flash
4

¡Bienvenido al intercambio de pila de respuestas de Drupal! No hay una forma directa de lograr esto en las vistas de Drupal a partir de ahora, y como sé.

Puede hacerlo utilizando el módulo Vistas PHP . Habilite este módulo y agregue un filtro de filtro PHP que puede seleccionar de la categoría Global del filtro de vistas una vez que instale el módulo anterior.

Agregue código php como se muestra a continuación en la sección de código 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;
}

Cambie field_price_a con su nombre de campo Price A y field_price_b con su nombre de campo Price B.

¡Lo probé y funcionó para mí! Espero que también puedas descifrarlo :-)

Anil Sagar
fuente
Gracias por la sugerencia. Todavía no puedo hacer que funcione con este bit de código y he usado los campos que aparecen al hacer dsm ($ data); Creo que también podría agregar una casilla de verificación y filtrar si la casilla de verificación está marcada. Gracias por tu ayuda.
Fadzy
Mientras tanto, es posible con vistas, sin ninguna codificación personalizada o cualquier módulo contribuido necesario.
Елин Й.
-1

http://drupal.org/project/views_dependent_filters es bastante útil ...

El botón para agregar "Criterios de filtro" tiene nuevos submenús. Selfexplaning una vez que lo pruebes ...

EDITAR: lo siento, pero no para> o <, sino para grupos de filtros que pueden ser separados por OR

sinini
fuente
-2

Si el precio es un campo en su tipo de contenido, en las vistas de Drupal 7 puede elegir automáticamente y fácilmente un comparador de campo. Supongo que esto debería funcionar.

Saurav
fuente