无需扩展能否在MediaWiki模板中调用分类页的页面列表?
核心结论
MediaWiki原生环境(不安装任何第三方扩展)下,直接通过{{:Category:Druid_Spells}}嵌入分类页,确实无法获取分类自动生成的下属页面列表。原因是分类下的成员列表是MediaWiki内核在分类页渲染阶段动态追加的内容,不属于分类页本身存储的可转嵌wikitext内容,所以嵌入时只会拉取你手动编辑到分类页的自定义说明文本。
无扩展原生实现方法
不需要安装任何扩展,使用MediaWiki内核自带的功能就能实现分类下属页面列表的跨页嵌入,列表会随分类成员的新增、调整自动更新,完全不需要手动维护:
推荐方案:使用内核内置的#categorytree解析器函数
MediaWiki 1.31及以上版本已经将CategoryTree功能合并入内核,默认开启,不需要额外安装扩展,直接在需要嵌入列表的页面编写如下代码即可:
= Druid Spells = {{#categorytree:Druid_Spells |mode=pages |sortkey=title |hideroot=true |namespaces=0 }}
常用参数说明:
mode=pages:仅展示分类下的普通内容页面,隐藏子分类、上传文件等无关内容sortkey=title:按页面标题字母排序,和原生分类页的默认排序规则完全一致hideroot=true:隐藏分类本身的入口链接,仅展示成员列表namespaces=0:限定拉取主命名空间的内容,过滤其他命名空间的杂项页面
你需要嵌入技能、能力等其他分类的对应列表时,只需要替换代码里的分类名、按需调整参数即可,可以自由组合多个分类模块排版,不需要直接使用分类页作为最终展示页。
低版本兼容方案
如果你的MediaWiki版本低于1.31,可以通过模板拆分的方式实现需求:
- 将各个分类页的自定义说明内容单独存为独立模板,例如德鲁伊法术分类的说明存为
Template:DruidSpellsIntro - 在对应分类页嵌入该说明模板,保留分类原生的自动列表展示
- 在职业详情页先嵌入对应说明模板,再添加分类跳转链接引导用户查看完整列表,待版本升级后再替换为
#categorytree实现自动列表嵌入即可。
提示:所有通过上述方法嵌入的列表都会和分类数据实时同步,新增、修改、移除分类下的页面时,嵌入位置的列表会自动更新,不需要手动编辑维护。
内容的提问来源于stack exchange,提问作者Mattamue
相关产品推荐
相关产品推荐

