Я пытаюсь написать плагин, который отображает как внутренние результаты DB MediaWiki, так и результаты из внешней базы данных SQL на основе предоставленного поискового запроса.Внешняя база данных для поиска средств массовой информации - preend hook
Я написал весь поисковый код, но я изо всех сил пытаюсь отобразить результаты. Я проверил Special: Version и расширение.
Я попробовал этот крюк:
$wgHooks[ 'SpecialSearchResultsPrepend'][] = 'onSpecialSearchResultsPrepend';
Где моя функция
function onSpecialSearchResultsPrepend($t, $out, $term){
some routine
}
, но я не могу правильно отобразить что-либо на этом крючке. Кроме того, когда я просто пытаюсь записать в консоль отладки или распечатать исходный текст отладки, я не получаю никакого вывода из моего расширения.
Документация mediawiki указывает на возврат false, чтобы отключить общий вывод поиска. Я попробовал это, чтобы просто проверить, что я на самом деле правильно подключен, и возврат false с крючка не отключает результаты поиска. Поэтому я считаю, что использую неправильный метод для подключения.
Каков правильный способ подключить эту функцию? Я пробовал в отдельных файлах, глобальных функциях или объявлялся внутри классов. Кажется, никто не исправил мою проблему. Прямо сейчас я пытаюсь просто вернуть false из основного файла расширения, то есть «externalsqlsearch.php».
Простой пример, который работает для меня, если положить в LocalSettings.php: $ wgHooks [ «SpecialSearchResultsPrepend '] [] = function ($ specialSearch, OutputPage $ out) { \t $ out-> addWikiText (' MaxSem был здесь! '); \t return false; }; Вы уверены, что вы зарегистрировали его правильно, и вы используете $ out для вывода, а не echo()? – MaxSem
Спасибо Макс. Этот простой пример сработал. Тем не менее, мне в конечном итоге нужно переместить этот вызов вызова в сам файл расширения. По какой-то причине, когда я это делаю, расширение загружается, но крючок не зарегистрирован. Я нашел $ wgSpecialVersionShowHooks и установил значение true, так что теперь я могу хотя бы увидеть, зарегистрирован ли мой крючок или нет. –
Получил работу. Вы должны регистрировать перехватчики через extensions.json. См. Мой ответ. –