Mediawiki 如何在模板中包含api请求的结果?

Mediawiki 如何在模板中包含api请求的结果?,mediawiki,mediawiki-api,mediawiki-templates,Mediawiki,Mediawiki Api,Mediawiki Templates,我第一次使用Mediawiki创建wiki。我想在模板中自动包含当前页面的所有反向链接(如“请参阅”部分)。我试图成功地使用API,但仍然没有成功地将结果的有用部分包含在模板中 我已经查询Google和Stackoverflow好几天了(可能是以错误的方式),但我仍然被卡住了 有人能帮帮我吗?据我所知,没有合理的办法。可能最接近的方法就是编写JavaScript代码,在页面中出现特定HTML元素时做出反应,发出API请求,然后更新HTML以包含结果。据我所知,没有合理的方法可以做到这一点。可能最

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

我已经查询Google和Stackoverflow好几天了(可能是以错误的方式),但我仍然被卡住了


有人能帮帮我吗?

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

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

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

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

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

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

我个人可以向您推荐的一个扩展可以做到这一点(以及许多其他事情),就是(完全公开:我在某种程度上与该项目有关联)。它允许您执行复杂的页面选择

例如,您正在尝试查找链接到您的页面的所有页面。这可以由DPL轻松完成,如下所示:

{{ #dpl: linksto = {{FULLPAGENAME}} }}
在wiki文本中不可能执行任何JavaScript或使用更不常见的HTML。因此,您将无法像那样使用MediaWiki API

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

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

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

我个人可以向您推荐的一个扩展可以做到这一点(以及许多其他事情),就是(完全公开:我在某种程度上与该项目有关联)。它允许您执行复杂的页面选择

例如,您正在尝试查找链接到您的页面的所有页面。这可以由DPL轻松完成,如下所示:

{{ #dpl: linksto = {{FULLPAGENAME}} }}

我最近写了一篇博客文章,展示了如何调用API来获取作业队列大小并将其显示在wiki页面中。你可以在网站上阅读。但是,此解决方案确实需要扩展。代码如下所示:

{{#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上面的答案可能更好。

我最近写了一篇博客文章,展示了如何调用API来获取作业队列大小,并将其显示在wiki页面中。你可以在网站上阅读。但是,此解决方案确实需要扩展。代码如下所示:

{{#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的上述回答可能更好。

谢谢您的回复。你给了我很多有用的东西去探索。正如我所说,我是一个维基初学者,在我读到你的文章之前,我对Mediawiki很失望,因为我认为这很难。我将进一步研究如何编写扩展,并尝试您的部分。再次感谢你!谢谢你的回复。你给了我很多有用的东西去探索。正如我所说,我是一个维基初学者,在我读到你的文章之前,我对Mediawiki很失望,因为我认为这很难。我将进一步研究如何编写扩展,并尝试您的部分。再次感谢你!它似乎很强大。还有一件事需要测试:)根据你的建议和poke的建议,我确信我有正确的工具。我只需要学习它们。非常感谢。它看起来很强大。还有一件事需要测试:)根据你的建议和poke的建议,我确信我有正确的工具。我只需要学习它们。非常感谢。此外,如果OP幸运的话,Scribunto/Lua模板可以访问相关API。此外,如果OP幸运的话,Scribunto/Lua模板可以访问相关API。