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?

Respuestas:


10

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


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


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.
Елин Й.



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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.