我是第一次使用 Mediawiki 创建一个 wiki。我想在模板中自动包含当前页面的所有反向链接(如“另见”部分)。我尝试成功地使用 API,但我仍然没有成功地将结果的有用部分包含在我的模板中。
几天来我一直在查询 Google 和 Stackoverflow(可能是错误的方式),但我仍然卡住了。
有人可以帮助我吗?
我是第一次使用 Mediawiki 创建一个 wiki。我想在模板中自动包含当前页面的所有反向链接(如“另见”部分)。我尝试成功地使用 API,但我仍然没有成功地将结果的有用部分包含在我的模板中。
几天来我一直在查询 Google 和 Stackoverflow(可能是错误的方式),但我仍然卡住了。
有人可以帮助我吗?
在 wiki 文本中执行任何 JavaScript 或使用更不常见的 HTML是不可能的。因此,您将无法像那样使用 MediaWiki API。
但是,您必须通过多种不同的选择来实现这样的目标:
您可以通过在MediaWiki:Common.js
. 那里的代码将自动包含在内,可用于增强 wiki 体验。这显然需要客户端上的 JavaScript,因此它可能不是最佳选择;但至少你可以直接使用 API。不过,您必须添加一些内容才能确定正确放置结果的位置。
更好的选择是使用为您提供此输出的扩展。您可以尝试找到已经提供此功能的扩展,或者编写您自己的使用内部 MediaWiki API(不是 JS 的)来访问该内容的扩展。
我个人可以向您推荐的一个扩展(以及许多其他事情)是DynamicPageList(完全披露:我有点隶属于该项目)。它允许您执行复杂的页面选择。
例如,您要做的是查找链接到您的页面的所有页面。这可以通过 DPL 轻松完成,如下所示:
{{ #dpl: linksto = {{FULLPAGENAME}} }}
据我所知,没有合理的方法可以做到这一点。可能最接近的方法是编写一个 JavaScript 代码,该代码对页面中特定 HTML 元素的存在做出反应,发出 API 请求,然后更新 HTML 以包含结果。
我最近写了一篇博文,展示了如何调用 API 来获取作业队列大小并将其显示在 wiki 页面内。您可以在 wiki 内的 Display MediaWiki job queue size中阅读有关它的信息。但是,此解决方案确实需要外部数据扩展。代码如下所示:
{{#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 上面的答案可能会更好。