Я пытаюсь написать плагин, который отображает результаты как внутренней базы данных MediaWiki, так и результаты из внешней базы данных SQL на основе предоставленного поискового запроса.
Я написал весь код поиска, но я изо всех сил пытаюсь отобразить мои результаты. Я проверил Special: Version и мое расширение появляется.
Я попробовал этот крючок:
$wgHooks[ 'SpecialSearchResultsPrepend'][] = 'onSpecialSearchResultsPrepend';
Где моя функция
function onSpecialSearchResultsPrepend($t, $out, $term){
some routine
}
, пока я не могу правильно отобразить что-либо на этом крючке. Кроме того, когда я просто пытаюсь записать в консоль отладки или напечатать необработанный текст отладки, я не получаю вывод от своего расширения.
В документации MediaWiki указано, что нужно возвращать false, чтобы отключить общий поиск. Я попробовал это, чтобы просто убедиться, что я действительно подключен правильно, и возврат false из ловушки не отключает результаты поиска. Поэтому я считаю, что я использую неправильный метод для подключения.
Как правильно подключить эту функцию? Я пытался в отдельных файлах, глобальных функций или объявлен в классах. Никто, казалось, не исправил мою проблему. Прямо сейчас я пытаюсь просто вернуть false из основного файла расширения, то есть externalsqlsearch.php.
Вот мое рабочее решение для 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;
}
}
Других решений пока нет …