Есть дополнение живот поиск
При вводе ключевых слов приходят подсказки с совпадениями в заголовках. При нажатии на эти подсказки сразу перебрасывает на публикацию. Мне нужно, чтобы это ключевое слово в строке поиске искала все публикации с этим ключевым словом.
Что редактировать в файле, чтобы решить эту проблему?
widget_autocomplete.php
<?php
class actionSearchWidgetAutocomplete extends cmsAction {
public function run() {
if (!$this->request->isAjax() || !($term = $this->request->get('term', ''))) {
return cmsCore::error404();
}
$default_order_by = !empty($this->options['order_by']) ?
$this->options['order_by'] : 'fsort';
$query = $this->request->get('term', '');
$type = $this->request->get('type', 'words');
$date = $this->request->get('date', 'all');
$order_by = $this->request->get('order_by', $default_order_by);
if (!in_array($order_by, ['fsort', 'date_pub'], true)) { return cmsCore::error404();
}
if (!in_array($type, ['words', 'exact'], true)) { return cmsCore::error404();
}
if (!in_array($date, ['all', 'w', 'm', 'y'], true)) { return cmsCore::error404();
}
$result_all = [];
if ($this->request->has('term')) {
if (!$query || !$this->model->setQuery($query)) {
cmsUser::addSessionMessage(LANG_SEARCH_TOO_SHORT, 'error');
return $this->redirectToAction('');
}
$this->model->setSearchType($type);
$search_controllers = cmsEventsManager::hookAll('fulltext_search', $this, []);
foreach ($search_controllers as $search_controller) {
foreach ($search_controller['sources'] as $sources_name => $sources_title) {
if (!empty($this->options['types']) && !in_array($sources_name, $this->options['types'])) { continue;
}
if (empty($search_controller['match_fields'][$sources_name])) { continue;
}
$this->model->filterDateInterval($date);
if (!empty($search_controller['joins'][$sources_name])) { $this->model->applyJoins($search_controller['joins'][$sources_name]);
}
if (!empty($search_controller['filters'][$sources_name])) { $this->model->filterSearch($search_controller['filters'][$sources_name]);
}
$this->model->setMatchFields($search_controller['match_fields'][$sources_name])->filterQuery();
$results_count = $this->model->getCount($search_controller['table_names'][$sources_name], false);
if ($results_count) {
$this->model->selectList($search_controller['select_fields'][$sources_name]);
$result = $this->model->getSearchResults($search_controller['table_names'][$sources_name]);
foreach ($result as $key => $item) {
if (is_callable($search_controller['item_callback'])) { $item,
$this->model,
$sources_name,
$search_controller['match_fields'][$sources_name],
$search_controller['select_fields'][$sources_name]
]);
if ($result[$key] === false) {
}
}
}
}
$this->model->resetFilters();
}
}
}
$results = [];
foreach ($result_all as $item) {
'id' => $item['id'],
'url' => $item['url'],
'image' => html_image_src($item['photo'], 'micro', true)
);
}
// Ограничиваем до 8 результатов
return $this->cms_template->renderJSON($results);
}
}