You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MediaWiki新手求助:如何优化动态用户排行榜的显示效果

问题原因与解决方法

核心问题

你遇到的情况有两个关键原因:

  • 模板仅定义变量,无输出逻辑:当前的UserScore模板只是用#vardefine存储参数,但完全没有生成排行榜样式的代码,等于只做了数据存储,没做展示。
  • 可能未启用ParserFunctions扩展:如果MediaWiki没装这个扩展,{{#vardefine:...}}会被当作纯文本直接输出,不会被解析执行。

修复步骤

1. 确保启用ParserFunctions扩展

去MediaWiki后台的Special:Version页面检查是否有ParserFunctions扩展。如果没有,打开服务器上的LocalSettings.php,添加一行:

wfLoadExtension( 'ParserFunctions' );

保存后重启MediaWiki服务。

2. 重写UserScore模板

把模板改成同时完成数据存储+排行榜样式输出的结构,比如做成可拼接的表格行(方便批量生成排行榜)。替换Template:UserScore的代码为:

<includeonly>
{{#vardefine: Username | {{{Username|匿名用户}}} }}
{{#vardefine: Score | {{{Score|0}}} }}
{{#vardefine: Badges | {{{Badges|0}}} }}
<tr>
  <td>{{#var:Username}}</td>
  <td>{{#var:Score}}</td>
  <td>{{#var:Badges}}</td>
</tr>
</includeonly>
<noinclude>
### 模板说明
用于生成排行榜的单条用户数据行,支持参数:
- Username:必填,用户名
- Score:必填,用户分数
- Badges:必填,用户徽章数量
</noinclude>

3. 排行榜页面调用示例

在你的排行榜页面里,先写表格框架,再批量调用模板生成内容:

{| class="wikitable sortable"
! 用户名 !! 分数 !! 徽章数量
{{UserScore|Username=Timmy|Score=100|Badges=5}}
{{UserScore|Username=Lily|Score=180|Badges=8}}
{{UserScore|Username=Bob|Score=120|Badges=6}}
|}

这样页面会生成一个带排序功能的表格,就是你要的排行榜样式。

额外优化提示

  • 如果需要更复杂的样式(比如按分数高亮、徽章图标),可以在<td>标签里加CSS类,比如<td class="high-score">{{#var:Score}}</td>,然后在MediaWiki的Common.css里定义样式。
  • 如果要动态从数据库拉取用户数据,需要结合MediaWiki的扩展或者自定义PHP扩展,单纯模板只能处理静态传入的参数。

内容的提问来源于stack exchange,提问作者Timmy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 01:01:20