我对 mediawiki 非常陌生,并且用它进行开发。
目标:创建一个动态填充用户和统计数据的排行榜页面。
排行榜
{{UserScore
| Username = Timmy
| Score = 100
| Badges = 5
}}
LeaderBoard is showing data like this:
{{#vardefine: Username|Timmy}} {{#vardefine: Score|100}} {{#vardefine: Badges|5}}
Not sure why or how to display better.
模板:用户评分
<includeonly>{{ #vardefine: Username | {{{Username}}} }}</includeonly>
<includeonly>{{ #vardefine: Score | {{{Score}}} }}</includeonly>
<includeonly>{{ #vardefine: Badges | {{{Badges}}} }}</includeonly>
您似乎尚未安装扩展程序变量。
但无论如何你都不应该这样做。变量的目的是在一页内重用相同的数据;甚至由于 wiki 解析的变化,他们也不能再这样做了。
要显示数据,请像这样定义
Template:UserScore
:
{| class="infobox"
! Username || {{{Username|{{PAGENAME}}}}}
|-
! Score || {{{Score|0}}}
|-
! Badges || {{{ Badges|}}}
|}
要查询其他页面的数据,您可能需要安装Semantic MediaWiki或Cargo。
如果您安装了 Semantic MediaWiki,请像这样重新定义
Template:UserScore
:
{| class="infobox"
! Username || {{{Username|{{PAGENAME}}}}} {{#set:Username={{{Username|{{PAGENAME}}}}}}}
|-
! Score || {{{Score|0}}} {{#set:Score={{{Score|0}}}}}
|-
! Badges || {{{ Badges|}}} {{#set:Has badge={{{Badges|}}}|+sep=,}}
|}
将
Property:Username
创建为 (some description) {{#set:Has type=Text}}
,将 Property:Score
创建为 (some description) {{#set:Has type=Number}}
,并将 Property:Has badge
创建为 (some description) {{#set:Has type=Page}}
。
然后您可以查询,例如在页面上
The Sublime Badge of Everlasting Honour
:
The following people have the badge {{PAGENAME}}:
{{#ask: [[Has badge::{{FULLPAGENAME}}]]
| ?Username
}}
我给出的例子对于生产使用来说太原始了,但是你可以让它们变得更复杂。