Поиск sphinx'ом по статическим страницам.
Всем привет.
Хотел добавить поиск по стат. страницам, но задача оказалась сложнее чем я думал (в связи с малым опытом в ковырянии LS)
Ситуация примерно такая
— Конфиг sphinx настроен на индексацию статических страниц, помимо топиков и комментариев.
— В /classes/actions/ActionSearch.class.php
добавлен эвент
$this->AddEvent('pages','EventPages');
Функция для обработки
function EventPages(){
$aReq = $this->PrepareRequest();
$aRes = $this->PrepareResults($aReq, 10);
if(FALSE === $aRes) {
$this->Message_AddErrorSingle($this->Lang_Get('system_error'));
return Router::Action('error');
}
/**
* Если поиск дал результаты
*/
if($this->bIsResults){
/**
* Получаем топик-объекты по списку идентификаторов
*/
$aPage = $this->Page_GetPages(array_keys($this->aSphinxRes['matches']));
/**
* Делаем сниппеты
*/
foreach($aPage AS $oPage){
$oPage->setText($this->Sphinx_GetSnippet(
$oPage->getText(),
'pages',
$aReq['q'],
'<span class="searched-item">',
'</span>'
));
}
/**
* Отправляем данные в шаблон
*/
$this->Viewer_Assign('bIsResults', TRUE);
$this->Viewer_Assign('aRes', $aRes);
$this->Viewer_Assign('aPage', $aPage);
}
}
Текущая ошибка это
$aPage = $this->Page_GetPages(array_keys($this->aSphinxRes['matches']));
На сколько я понимаю, мне осталось грамотно вытянуть контент страницы, чтобы подсветить совпадения, после чего резалт можно будет вывести
В шаблоны внес изменения, поиск показывает, что есть результаты и по стат. страницам
осталось грамотно зацепить контент, для результатов поиска. Застрял, т.к. опыт с внутренним устройством LS очень мал.
И, наверное, $oPage->setText подрезать для вывода.
Буду очень благодарен за помощь :)
6 комментариев
Вот вроде начал делать потихоньку