Mediawiki搜索外部数据库 - 前挂钩

时间:2016-06-22 18:16:22

标签: php mediawiki mediawiki-extensions

我正在尝试编写一个插件,根据提供的搜索词显示内部mediawiki数据库结果和外部SQL数据库的结果。

我已经编写了所有搜索代码,但我正在努力实际显示我的搜索结果。我查看了Special:Version并且我的扩展名出现了。

我试过这个钩子:

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

我的职能是

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

,但我无法在此挂钩上正确显示任何内容。此外,当我只是尝试写入调试控制台或打印原始调试文本时,我的扩展程序没有输出。

mediawiki文档指定返回false以禁用通用搜索输出。我试过这只是为了验证我实际上是否正确挂钩,并从钩子返回false不会禁用搜索结果。因此,我认为我使用的方法不正确。

挂钩此功能的正确方法是什么?我尝试过单独的文件,全局函数或在类中声明。似乎没有人纠正我的问题。现在,我试图从主扩展文件中返回false,即'externalsqlsearch.php'。

1 个答案:

答案 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;
    }

}