В теме пожеланий я просил добавить хук в экшн поиска, тогда можно было бы добавлять свои результаты в $results[].
Но пока тишина…
Теги тоже зависимы от типов контента :(Он ищет только по типам контента.
Общий поиск сейчас завязан на схожих таблицах для компонентов. Поэтому по ним и ищет. Если у вас таблица различается, то придется делать свой поиск
так ведь никто не против сделать свой. Но нужно эти результаты показывать пользователю. А значит нуженЕсли у вас таблица различается, то придется делать свой поиск
хук в экшн поиска, тогда можно было бы добавлять свои результаты в $results[]
github.com/instantsoft/icms2/commit/c1354de0cabffe4dde262c74597494c07fec0571
Заинтересованных прошу протестировать. Установить движок из гита и сделать поиск своему компоненту.
Сегодня вечером залью проверю.
это как вы в своем компоненте сделаете. чуть позже напишу документацию, а пока смотрите фронтэнд компонента поиск. там добавлен хук и еще много всего. возникнут вопросы, задавайте.Поиск по всем полям сторонник компонентов
<?php class onAfishaFulltextSearch extends cmsAction { public function run($data){ $results_count = $model->getSearchResultsCount('afisha_events', $sql_fields, $default_fields); if ($results_count){ $result = $model->getSearchResults('afisha_events', $sql_fields, $default_fields); } 'title' => 'Афиша', 'name' => 'afisha', 'items' => $result, 'count' => $results_count ); return $results; } }
$sql = "SELECT {$select_fields} FROM cms_{$table_name} WHERE is_pub = 1 AND MATCH({$sql_fields}) AGAINST ('{$query}' IN BOOLEAN MODE) ";
if ($this->date_interval != 'all'){ switch ($this->date_interval){ case 'w': $sql .= "AND DATEDIFF(NOW(), date_pub) <= 7 \n"; break; case 'm': $sql .= "AND DATE_SUB(NOW(), INTERVAL 1 MONTH) < date_pub \n"; break; case 'y': $sql .= "AND DATE_SUB(NOW(), INTERVAL 1 YEAR) < date_pub \n"; break; } }
Тапками прошу не кидаться, я может не совсем понял назначение методов в модели поиска.
дело в том, что системный поиск использует поле даты. В поисковой форме есть выбор интервала. Соответственно поле date_pub должно быть и у вас.Как компонент поиска что-то найдет, если в getSearchSQL идет две жесткие привязки в запросах
По полю is_pub согласен, уберу его, сделаю более универсально.
Они для выборкизачем задавать $default_fields
date_pub должно быть и у вас.
Так, я понял. А может добавить универсальности с возможностью указать свое название поля даты?
И еще. Что-то надо делать с выводом результатов в шаблон. Там кругом нужен ctype_name.
В итоге получаем ошибку
Warning: Invalid argument supplied for foreach() in Z:\home\instant2test2\www\templates\default\controllers\search\index.tpl.php on line 67
А так все здорово конечно. Переименовал столбцы в базе. И вардампом вижу, что все ищется, до шаблона доходит.