Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用搜索api通过寻呼机从查看结果中删除重复记录_Php_Drupal 7_Drupal Views_Drupal Search - Fatal编程技术网

Php 使用搜索api通过寻呼机从查看结果中删除重复记录

Php 使用搜索api通过寻呼机从查看结果中删除重复记录,php,drupal-7,drupal-views,drupal-search,Php,Drupal 7,Drupal Views,Drupal Search,我的项目是在Drupal7中设置的,我正在使用搜索API来显示我的自定义搜索结果。实际上,我想显示基于两种内容类型的搜索结果,所以我已经为这些内容类型配置了搜索api,并选择了我想要搜索的字段,然后为内容编制索引 为了显示搜索结果,我使用了索引节点类型的drupal视图。但问题是,在我的搜索结果中,我得到了重复的结果,因为有些内容有相同的标题,但有不同的正文 我想删除标题重复的搜索结果。(自定义字段由我自己创建) 我已经尝试了一些自定义的视图钩子解决方案,但它不能正常工作,它给寻呼机的问题 fu

我的项目是在Drupal7中设置的,我正在使用搜索API来显示我的自定义搜索结果。实际上,我想显示基于两种内容类型的搜索结果,所以我已经为这些内容类型配置了搜索api,并选择了我想要搜索的字段,然后为内容编制索引

为了显示搜索结果,我使用了索引节点类型的drupal视图。但问题是,在我的搜索结果中,我得到了重复的结果,因为有些内容有相同的标题,但有不同的正文

我想删除标题重复的搜索结果。(自定义字段由我自己创建)

我已经尝试了一些自定义的视图钩子解决方案,但它不能正常工作,它给寻呼机的问题

function custom_views_pre_render(&$view) {
    if ($view->name == 'search_books') {
        $view_ISBN = array();
        foreach ($view->result AS $key => $res_view) {
            $ISBN = $res_view->entity->field_isbn[und][0]['value'];
            if (!in_array($ISBN,$view_ISBN)) {
                $view_ISBN[] = $ISBN;
                unset($view->result[$key]);
            }
        }

        $view->query->pager->total_items = count($view->result);
        $view->query->pager->update_page_info();
    } 
}
这会删除重复的结果,但会给出错误的寻呼机结果

我也尝试过查询alterhook,但它对我不起作用

函数自定义查询更改($query){

我还尝试安装“views_distinct”模块,并将字段与视图区分开来,但这也会给我带来寻呼机问题


您知道如何解决这个问题吗?

您可以使用分组字段来使用视图格式中的分组字段,也可以使用

使用聚合
从查看
高级
部分

良好的代码缩进将帮助我们阅读代码,更重要的是,它将帮助您调试代码,为您自己的利益着想。您可能会被要求在几周/几个月内修改此代码,最后您将感谢我。
if (isset($query->alterMetaData)) {
    if (isset($query->alterMetaData['view'])) {
        if($query->alterMetaData['view']->name == 'search_books') {
            $fields =& $query->getGroupBy();
                // Tried various fields to check which was the field creating the problem.

                $query->groupBy('field_isbn');
                $query->distinct = TRUE;
        }
    }
}
}