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

时间:2013-05-01 15:24:03

标签: mediawiki mediawiki-api mediawiki-templates

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

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

有人能帮助我吗?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

虽然有很多不同的选择可以达到这样的目的:

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

更好的选择是使用extension来提供此输出。您可以尝试find已经提供此功能的扩展程序,也可以使用内部MediaWiki API(而非JS)访问该内容的write your own

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

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

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

答案 2 :(得分:1)

我最近写了一篇博客文章,展示如何调用API来获取作业队列大小并在wiki页面内显示。您可以在Display MediaWiki job queue size inside your wiki阅读相关信息。但是,此解决方案确实需要External Data扩展名。代码如下:

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