[我正在尝试编写一个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,这些文件在以下位置中进行了记录:
该钩子不能返回文本,您只能更改标题以从该钩子生成匹配项。 $ title必须是一个Title对象,如果您上面发布的代码与您要使用的确切代码一样,是由于第二个参数不是名称空间常量之一,例如NS_MAIN