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

Mediawiki search external database - prepend hook

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

我已经编写了所有的搜索代码,但我很难真正显示我的结果。我检查了 Special: Version 并且出现了我的扩展。

我试过这个钩子:

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

我的功能是

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

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

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

挂接到此函数的正确方法是什么?我试过在单独的文件、全局函数中或在 类 内声明。 None 似乎解决了我的问题。现在,我正试图从主扩展文件中 return false,即 'externalsqlsearch.php'.

这是我针对 Mediawiki 1.26.2 的工作解决方案 - 我无法在文档中找到它,但我能够通过阅读其他扩展来收集它。

要注册挂钩,您必须在 extensions.json 文件的 'hooks' 部分下声明它。对我来说,这看起来像

"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;
    }

}