Есть сайт, где публикуются события, каждое из которых имеет свою дату (реализовано с помощью Date). И на этом же сайте есть поиск, в результатах которого очень важно показывать сначала ближайшие события, т.е. сортируя их по убыванию (сейчас материалы в поиске выводятся хаотично).
Я уже немного темизировал поиск с помощью Display Suite и думал, что вот сейчас осталось только добавить несложную сортировочку, но... прилично погуглив, так и не смог найти простого решения, без ворочения всяких там Apache Solr или применения Views.
Существует ли простой способ решения моей задачи?
Комментарии
То есть используете стандартный друпаловский поисковик?
В admin/config/search/settings в «Модуль по умолчанию для поиска» выбран Display Suite Search, а в admin/structure/ds/list/search выбрана «Поисковая система» Node.
Видимо, это значит, что да, поиск стандартный :-).
В процессе поиска решения я попробовал реализовать сортировку с помощью Search API + Search API Database Search + Search API sorts, настроив в итоге нужную сортировку, но всё это я не смог заставить работать с текущим поиском. Как я понял, для этого нужно, опять же, воротить Search Pages, что для моей простой задачи я считаю излишним.
Вот набросал, нужно отладить:
$is_search = FALSE;
foreach ($query->getTables() as $table) {
if ($table['table'] == 'search_index') {
$is_search = TRUE;
}
}
if ($is_search) {
$query->condition('n.created', time(), '>=')
$query->orderby = array(
array(
'field' => 'n.created',
'direction' => 'ASC',
)
);
}
}
Но рекомендую Views + Search API.