我如何从MediaWiki SearchAfterNoDirectMatch挂钩返回文本?

问题描述 投票:0回答:1

[我正在尝试编写一个MediaWiki搜索挂钩,该挂钩将列出文件系统中的本机文件,然后最终允许人们单击其中一个文件并查看其内容。

我的extensions.json包含此内容:

        "Hooks": {
            "SearchAfterNoDirectMatch": "MediaWiki\\Extension\\NativeFileList\\Hooks::onSearchAfterNoDirectMatch"
        },

我的Hooks :: onSearchAfterNoDirectMatch文件看起来像这样:

namespace MediaWiki\Extension\NativeFileList;

class Hooks {
        /**
         * @see https://www.mediawiki.org/wiki/Manual:Hooks/SearchAfterNoDirectMatch
         * @called from https://gerrit.wikimedia.org/g/mediawiki/core/+/master/includes/search/SearchNearMatcher.php
         * @param $searchterm
         * @param $title - array of titles
         * Returns true if it found something, false is otherwise
         */
        public static function onSearchAfterNoDirectMatch( $searchterm, &$title ) {
           $title=Title::newFromText( "test", "bar");
           return false;
    }

}

我的问题是没有文本返回。好吧,比这更糟。有了上面的代码,我得到了一个异常(但是我不知道如何调试它,因为我看不到异常)。如果我将行设置$title取出,它将返回。如果我将行更改为$title=undefined();,则会收到另一个错误。如果设置为$title="foo";,则不会出错,但也不会出现foo。

那么,如何返回搜索结果,或者甚至返回一组搜索结果?

现有搜索插件均未使用现代搜索Hook api,这些文件在以下位置中进行了记录:

hook mediawiki mediawiki-extensions
1个回答
0
投票

该钩子不能返回文本,您只能更改标题以从该钩子生成匹配项。 $ title必须是一个Title对象,如果您上面发布的代码与您要使用的确切代码一样,是由于第二个参数不是名称空间常量之一,例如NS_MAIN

© www.soinside.com 2019 - 2024. All rights reserved.