我第一次使用Mediawiki创建一个wiki。我想在模板中自动包括当前页面的所有反向链接(如"另见"部分)。我试着玩API,成功了,但我仍然没有成功地在我的模板中包括结果的有用部分。
我已经查询Google和Stackoverflow好几天了(可能是错误的方式),但我仍然卡住了。
有人能帮我吗?
据我所知,没有合理的方法来做到这一点。可能最接近的方法是编写JavaScript代码,对页面中特定HTML元素的存在做出反应,发出API请求,然后更新HTML以包含结果。
在wiki文本中不可能执行任何JavaScript或使用更不常见的HTML。这样你就不能像那样使用MediaWiki API了。
要达到这样的效果,有很多不同的选项:
您可以通过在MediaWiki:Common.js
上包含自定义JavaScript代码来使用API。那里的代码将自动包含,并可用于增强wiki体验。这显然需要在客户端使用JavaScript,所以它可能不是最好的选择;但至少你可以直接使用API。你必须添加一些东西来确定正确放置结果的位置。
一个更好的选择是使用一个提供此输出的扩展。你可以尝试找到一个已经提供此功能的扩展,或者编写自己的扩展,使用内部MediaWiki API(而不是JS API)来访问该内容。
一个扩展,我可以个人推荐你这样做(和许多其他的事情),是DynamicPageList(充分披露:我有点隶属于该项目)。它允许您执行复杂的页面选择。
例如,你要做的是找到所有链接到你的页面的页面。这可以很容易地通过DPL完成,像这样:
{{ #dpl: linksto = {{FULLPAGENAME}} }}
我最近写了一篇博客文章,展示了如何调用API来获取作业队列大小并在wiki页面中显示它。您可以在wiki中的"显示MediaWiki作业队列大小"中了解它。但是,此解决方案确实需要外部数据扩展。代码如下所示:
{{#get_web_data: url={{SERVER}}{{SCRIPTPATH}}/api.php?action=query&meta=siteinfo&siprop=statistics&format=json
| format=JSON
| data=jobs=jobs}}
{{#external_value:jobs}}
您可以轻松地交换不同的API调用来获取其他数据。对于您正在寻找的特定项目,@poke的答案可能更好。