Mediawiki поиск по внешней базе данных — prepend hook

Я пытаюсь написать плагин, который отображает результаты как внутренней базы данных MediaWiki, так и результаты из внешней базы данных SQL на основе предоставленного поискового запроса.

Я написал весь код поиска, но я изо всех сил пытаюсь отобразить мои результаты. Я проверил Special: Version и мое расширение появляется.

Я попробовал этот крючок:

$wgHooks[ 'SpecialSearchResultsPrepend'][] = 'onSpecialSearchResultsPrepend';

Где моя функция

function onSpecialSearchResultsPrepend($t, $out, $term){
some routine
}

, пока я не могу правильно отобразить что-либо на этом крючке. Кроме того, когда я просто пытаюсь записать в консоль отладки или напечатать необработанный текст отладки, я не получаю вывод от своего расширения.

В документации MediaWiki указано, что нужно возвращать false, чтобы отключить общий поиск. Я попробовал это, чтобы просто убедиться, что я действительно подключен правильно, и возврат false из ловушки не отключает результаты поиска. Поэтому я считаю, что я использую неправильный метод для подключения.

Как правильно подключить эту функцию? Я пытался в отдельных файлах, глобальных функций или объявлен в классах. Никто, казалось, не исправил мою проблему. Прямо сейчас я пытаюсь просто вернуть false из основного файла расширения, то есть externalsqlsearch.php.

0

Решение

Вот мое рабочее решение для Mediawiki 1.26.2 — мне не удалось найти это в документации, но я смог почерпнуть его из прочтения других расширений.

Чтобы зарегистрировать хук, вы должны объявить его в файле extensions.json в разделе «хуки». Для меня это выглядело как

"AutoloadClasses": {
"ExternalSQLSearchHooks": "ExternalSQLSearch.hooks.php"},

"Hooks": {
"SpecialSearchResultsPrepend": [
"ExternalSQLSearchHooks::onSpecialSearchResultsPrepend"]
},

и в ExternalSQLSearch.hooks.php, пример barebones:

class ExternalSQLSearchHooks {

public static function onSpecialSearchResultsPrepend($t, $out, $term){
$out->addWikiText( 'Testing');
return true;
}

}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]