我正在尝试编写一个插件,根据提供的搜索词显示内部mediawiki数据库结果和外部SQL数据库的结果。
我已经编写了所有搜索代码,但我正在努力实际显示我的搜索结果。我查看了Special:Version并且我的扩展名出现了。
我试过这个钩子:
$wgHooks[ 'SpecialSearchResultsPrepend'][] = 'onSpecialSearchResultsPrepend';
我的职能是
function onSpecialSearchResultsPrepend($t, $out, $term){
some routine
}
,但我无法在此挂钩上正确显示任何内容。此外,当我只是尝试写入调试控制台或打印原始调试文本时,我的扩展程序没有输出。
mediawiki文档指定返回false以禁用通用搜索输出。我试过这只是为了验证我实际上是否正确挂钩,并从钩子返回false不会禁用搜索结果。因此,我认为我使用的方法不正确。
挂钩此功能的正确方法是什么?我尝试过单独的文件,全局函数或在类中声明。似乎没有人纠正我的问题。现在,我试图从主扩展文件中返回false,即'externalsqlsearch.php'。
答案 0 :(得分:0)
这是我对Mediawiki 1.26.2的工作解决方案 - 我无法在文档中找到它,但我能够通过阅读其他扩展来收集它。
要注册一个钩子,你必须在'hooks'部分下的extensions.json文件中声明它。对我来说,这看起来像
"AutoloadClasses": {
"ExternalSQLSearchHooks": "ExternalSQLSearch.hooks.php"
},
"Hooks": {
"SpecialSearchResultsPrepend": [
"ExternalSQLSearchHooks::onSpecialSearchResultsPrepend"
]
},
和ExternalSQLSearch.hooks.php中的准系统示例:
class ExternalSQLSearchHooks {
public static function onSpecialSearchResultsPrepend($t, $out, $term){
$out->addWikiText( 'Testing');
return true;
}
}