Views: cómo eliminar la duplicación de nodos cuando se usan campos con valores múltiples
Recientemente mostré una lista de empresas usando Views y, por alguna razón, Views mostraba de 1 a 3 registros idénticos, lo cual es bastante extraño. Probé a eliminar filtros y ordenamientos, pero seguía duplicando los resultados. El problema era que los nodos tenían un campo de fecha con valores múltiples, y eso provocaba la duplicación de los nodos de las empresas. A continuación, la solución a mi —y quizá tu— problema de duplicación en Views:
Creamos un nuevo módulo; en mi caso se llamará sitemade. Contenido de sitemade.info:
name = Views Remove Duplicates
description = Elimina nodos duplicados. Requiere editar el archivo del módulo
para identificar las views que deseas afectar.
package = "Views"
core = 6.x
dependencies[] = views
Luego creamos sitemade.module:
<?php
function sitemade_views_pre_render(&$view) {
$used_nids = array();
if ($view->name == 'companies') {
if ($view->current_display == 'page_1') {
foreach ($view->result as $row) {
if (!in_array($row->nid, $used_nids)) {
$new_view_result[] = $row;
$used_nids[] = $row->nid;
}
}
$view->result = $new_view_result;
}
}
}
?>
Donde 'companies' es el nombre de mi View y 'page_1' el nombre del display de página en mi view. Tras añadir este código, los nodos en la view dejaron de duplicarse.
Esta solución está en inglés, y también encontré otras alternativas en: