Мой проект настроен в Drupal 7, и я использую API поиска для отображения своего пользовательского результата поиска. На самом деле я хочу показать результаты поиска на основе контента двух типов контента, поэтому я настроил API поиска для этого типа контента и выбрал поля, которые я хочу найти, а затем проиндексировал контент.
Для отображения результатов поиская использую drupal вид узла типа индекса. Но проблема в том, что в моем результате поиска я получаю повторяющиеся результаты, поскольку некоторые элементы имеют одинаковые заголовки, но имеют другой основной текст.
Я хочу удалить результаты поиска с дублирующим заголовком. (Пользовательское поле, созданное мной)
Я попробовал какое-то пользовательское решение с помощью хука View, но оно не работает должным образом, его проблема с пейджером
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();
}
}
Это удаляет дублирующийся результат, но дает неправильный пейджеррезультат.
Я также пытался перехватить Query alter, но он не работает для меня.
function custom_query_alter ($ query) {
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;
}
}
}
}
Я также пыталсяустановить модуль "views_distinct" и отличить поле от вида, но это также дает мне проблему с пейджером.
Есть идеи, как решить эту проблему?