Созонов Алексей

Веб-разработчик

Views как убрать дублирование нод

09.08.2015

Views как убрать дублирование нод, когда используются поля со множественными значениями

Drupal 6

Создаем новый модуль

mymodule.info

name = Views Remove Duplicates
description = Removes duplicate nodes. Requires editing the module file
to identify the views you want to affect.
package = "Views"
core = 6.x
dependencies[] = views

mymodule.module

<?php
function mymodule_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;
    }
  }
}

Drupal 7

function mymodule_query_alter($query) {

  if (isset($query->alterMetaData)) {
    if (isset($query->alterMetaData['view'])) {
      if($query->alterMetaData['view']->name == 'node_search') {
        $fields =& $query->getGroupBy();
        // Указываем какое поле создает дубликаты
        unset($fields['score']);
        $query->groupBy('nid');
      }
    }
  }
}

#Drupal