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: