2015-03-13 59 views
3

我想在用户页面上显示编辑/贡献的数量。有没有办法做到这一点?在MediaWiki上显示编辑计数

我试图用这里提到的链接:http://en.wikipedia.org/wiki/Help:User_contributions

所以,如果遵循的是,我得到了一个URL是这样的:

http://ourdomain/api.php?action=query&list=users&ususers=MYUSERNAME&usprop=editcount 

如果我使用它,它让我用正确的网页编辑计数。但它显示为XML:

<?xml version="1.0"?> 
<api> 
    <query> 
    <users> 
     <user name="USERNAME" editcount="728" /> 
    </users> 
    </query> 
</api> 

在此XML页面上,我可以看到正确的编辑计数。但我只是想在不同的页面上显示它。类似于“编辑总数:728”。我们使用MediaWiki 1.15.5-7。

回答

4

您已经找到您要找的内容!该API将为您提供用户编辑计数的最佳估计值。您可以在每个网页浏览中添加Javascript到MediaWiki:Common.js,以将此数据注入用户页面。在您的API调用中,附加&format=json以获得更友好的JS格式。

如果由于某种原因,你不想在这里使用Javascript,你可以在后台处理这个问题。这可以实现为parser function,将被调用,如{{USERCONTRIBS:UserName}}或类似的。您正在寻找的方法是User::getEditCount()。要获取用户对象,可以使用User::newFromName。但是,这需要在每个页面加载时清除用户页面,使加载速度慢很多,否则您不得不接受计数不总是最新的。

可能还有一些现有的扩展名可让您打印编辑计数。我确信Extension:SemanticExtraSpecialProperties确实可以,但这取决于整个SemanticMediawiki软件包。有关如何使用SMW + SESP显示用户统计信息的示例,请参阅this page

+0

我想将该结果传递给另一个Wiki页面。正如我前面提到的,我想在另一个wiki页面上显示“编辑总数:728”。任何想法如何做到这一点? – dreamer 2015-03-26 00:58:04

+1

您可以创建[解析器函数](https://www.mediawiki.org/wiki/Manual:Parser_functions),但由于页面不在页面浏览中呈现,因此不会同步。如果你需要确切的数量,使用JS。另外,如果您使用的是Semantic MediaWiki,那么[扩展名](https://www.mediawiki.org/wiki/Extension:Semantic_Extra_Special_Properties)可以为您提供我想要的内容(我自己使用它来显示用户贡献[此处](http://xn--ssongsmat-v2a.nu/ssm/S%C3%A4songsmat:Anv%C3%A4ndarlista)) – leo 2015-03-26 07:56:48

+0

感谢@leo,我会尝试一个。 – dreamer 2015-03-26 19:36:59