0

我是第一次使用 Mediawiki 创建一个 wiki。我想在模板中自动包含当前页面的所有反向链接(如“另见”部分)。我尝试成功地使用 API,但我仍然没有成功地将结果的有用部分包含在我的模板中。

几天来我一直在查询 Google 和 Stackoverflow(可能是错误的方式),但我仍然卡住了。

有人可以帮助我吗?

4

3 回答 3

1

在 wiki 文本中执行任何 JavaScript 或使用更不常见的 HTML是不可能的。因此,您将无法像那样使用 MediaWiki API。

但是,您必须通过多种不同的选择来实现这样的目标:

您可以通过在MediaWiki:Common.js. 那里的代码将自动包含在内,可用于增强 wiki 体验。这显然需要客户端上的 JavaScript,因此它可能不是最佳选择;但至少你可以直接使用 API。不过,您必须添加一些内容才能确定正确放置结果的位置。

更好的选择是使用为您提供此输出的扩展。您可以尝试找到已经提供此功能的扩展,或者编写您自己的使用内部 MediaWiki API(不是 JS 的)来访问该内容的扩展。

我个人可以向您推荐的一个扩展(以及许多其他事情)是DynamicPageList(完全披露:我有点隶属于该项目)。它允许您执行复杂的页面选择。

例如,您要做的是查找链接到您的页面的所有页面。这可以通过 DPL 轻松完成,如下所示:

{{ #dpl: linksto = {{FULLPAGENAME}} }}
于 2013-05-01T16:26:20.153 回答
1

据我所知,没有合理的方法可以做到这一点。可能最接近的方法是编写一个 JavaScript 代码,该代码对页面中特定 HTML 元素的存在做出反应,发出 API 请求,然后更新 HTML 以包含结果。

于 2013-05-01T16:08:33.360 回答
1

我最近写了一篇博文,展示了如何调用 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 上面的答案可能会更好。

于 2013-05-01T19:44:35.493 回答