hook - 如何从 MediaWiki SearchAfterNoDirectMatch 挂钩返回文本?
问题描述
我正在尝试编写一个 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,该 API 记录在以下位置:
解决方案
该挂钩无法返回文本,您只需更改标题即可从挂钩生成匹配项。$title 必须是 Title 对象,如果您在上面发布的代码是您正在使用的确切代码,那么您的异常是由于第二个参数不是命名空间常量之一,例如NS_MAIN
推荐阅读
- makefile - 为什么 $(INSTALL_BIN) 和 $(INSTALL_DATA) 在 Makefile 中安装文件时总是删除软链接
- java - 具有 Java 向后兼容性的 Kotlin 可选参数
- javascript - Listengin 提交表单 - Javascript
- flutter - StreamProvider:避免重复构建
- c# - 使用 System.Text.Json 将 IConfiguration 序列化回 Json
- python - 在 extras_require 中声明可选依赖项
- python - 如何在不使用 turtle.mainloop() 的情况下停止海龟冻结?
- css - 重用 css 元素
- windows - Windows 将 x.509 主题字段中的状态显示为 S=
- lighthouse - 默认情况下,灯塔为移动设备提供性能分数,如何获得桌面设备的性能分数?以编程方式使用节点模块