Cómo Eliminar Duplicados en Vistas de Drupal con Relaciones de Taxonomía
Cuando trabajamos con Drupal, una de las herramientas más potentes a nuestra disposición es Vistas. Ofrece una forma flexible de presentar contenido, especialmente cuando el contenido está asociado con taxonomías. Sin embargo, a veces nos encontramos con un problema molesto: los duplicados. Yo personalmente me enfrenté a este desafío hoy.
El Problema:
Creé una Vista de Drupal llamada 'recursos'. En esta vista, muestro elementos junto con sus términos de taxonomía asociados, gracias a las relaciones que he establecido. También he habilitado filtros de taxonomía expuestos, lo que permite a los usuarios filtrar fácilmente el contenido. Sin embargo, noté un problema: algunos elementos aparecen varias veces porque están vinculados a varios términos de taxonomía.
Probé las opciones "Distinto" y "Agregar" en Vistas de Drupal, esperando una solución rápida. Sin embargo, no resolvieron el problema. Así que, después de investigar un poco, encontré una solución que funcionó, la cual compartiré a continuación.
Cómo Solucionarlo:
- Añadir un Identificador Único a Cada Elemento:
Primero, ve a tu vista 'recursos' en Drupal. Añade el campoContenido: id
a la vista. - Modificar la Consulta de la Vista:
Implementa un hook personalizado para modificar la consulta de la vista. Esto asegurará que los resultados se agrupen por el ID único del contenido.
/**
* Implementa hook_views_query_alter().
*/
function my_module_views_query_alter(ViewExecutable $view, QueryPluginBase $query) {
// Dirigirse a la vista 'resources'.
if ($view->id() == 'resources') {
// Añadir el campo nid con una función groupby.
$query->addField('node_field_data', 'nid', '', ['function' => 'groupby']);
// Agrupar resultados por ID de nodo.
$query->addGroupBy('node_field_data.nid');
}
}
En Palabras Sencillas:
Lo que estamos haciendo aquí es simple. Le decimos a Drupal que mire cada entrada en nuestra vista y las agrupe por su ID de contenido único. De esta manera, incluso si una pieza de contenido está relacionada con varios términos de taxonomía y normalmente aparecería más de una vez, ahora solo se mostrará una vez.
¡Feliz depuración!