用户:386732003
常用链接
此处列出常用但无法直接快速访问的页面
编辑首页
所有特殊页面
特殊:监视列表
特殊:参数设置
所有模板
所有Mediawiki页面
特殊:上传文件
特殊:文件列表
特殊:重复文件列表
版主操作
Mediawiki:Common.js
MediaWiki:Common.css
管理员用css
管理员用js
Api沙盒
仅管理员可见
展示
(括号中的内容只对管理员可见)
以上括号中的内容仅管理员可见
用法
文字内容
<span class="adminonly">文字内容</span>
爬虫
根据robots.txt,除了以下部分外均可以爬取:
原文 | 表示 |
---|---|
/*skins* | 所有Wiki中的皮肤 |
/*index.php?* | 所有Wiki中的index.php?,类似临时存档 |
/*File:* | 所有Wiki中的具体文件页面 |
/*User* | 所有Wiki中的具体用户页面 |
/*MediaWiki:* | 所有Wiki中与底层MediaWiki有关的内容 |
/*load.php?* | |
/%e6%96%87%e4%bb%b6:* | 主站下所有文件的具体页面 |
/*%e6%96%87%e4%bb%b6:* | 所有Wiki下文件的具体页面 |
/*%e6%a8%a1%e6%9d%bf:* | 所有Wiki下的模板页面 |
/wdjs | 武动江山 Wiki |
/hl | 花灵 Wiki |
/nxxy | 那些需要守护的 Wiki |
/qxz | 群侠传 Wiki |
/wap | 逍遥传 Wiki |
/mc | Minecraft Wiki |
/yanyujianghu | 煙雨江湖 Wiki |
待办事项
原理
定义属性
在语义Mediawiki(简称SMW)中,可以使用#set魔术字为页面设置“属性”(Property)及属性的“值”(Value)。属性为局部变量,例如每个页面都可以有自己的“Name”属性并且互相独立不冲突。
{{#set:Name=HuangET}}
如果页面中有以上代码,那么这个页面就会拥有一个名叫“Name”,值为“HuangET”的属性。
访问属性
属性可以在全局进行访问,即允许在B页面访问A页面的属性,这使得属性可以成为某种意义上的“全局变量”。通过#ask魔术字,可以返回符合限定条件的属性的值,并进行后续处理。一个例子是目前(2023/11/21)位于Test的武器数据总览,该表格的代码如下(一些格式用部分被移除)
{{#ask: [[Category:武器]] |?名称 |?扩容量 |?战术换弹 |?全弹换弹 |?伤害 |?射速 |?DPS |?弹速 |?最远爆头 |?ADS }}
在#ask后的[[Category:武器]]是对页面的限定条件,即仅包含“武器”分类下的页面,随后将这些页面中对应属性的值列成表格并输出。还可以使用[[属性名::属性值]]来对结果进行进一步的筛选。#ask魔术字还可以规定输出用格式,例如可以将数据作为参数输入进模板的template模式,将在后文详细描述。
具体实现
在待办事项中,每一项待办事项(后称事件)都需要有一个名称和状态,而状态可以简单地分为已完成和未完成。可以为每个事件单独创建一个页面,例如为事件A创建页面A,随后在页面A中使用#set设定基础属性,包括事件的名称(如果没有意外的话,那就是A),事件的状态,以及一个用来切换状态的按钮或类似功能的东西。
主要限制
在实现切换按钮功能中主要出现了一下两个限制:
- BWiki不允许大多数常见形式的用户输入(例如<input>和<button>标签)
- 一个页面的属性无法在其他页面上更改
解决方案
使用链接代替按钮,在访问页面后切换事件的状态。由于事件的状态只能在对应的页面中更改,也就是说更改事件A状态的页面只能是页面A。而在访问时切换的方法可以结合前文提到的#ask的template模式完成,目前对应的模板是模板:测试
在页面A中的部分代码:
{{#ask: [[Category:待办事项]][[name::A]] |?state=state |format=template |template=待办事项切换 }}
解析:
- [[Category:待办事项]][[name::A]]:将#ask的目标限定为处于待办事项分类中,name属性为A的所有页面
- |?state=state:将目标页面的state属性作为state参数传入模板
- |format=template:将格式规定为模板
- |template=待办事项切换:使用模板:待办事项切换
模板:待办事项切换的内容:
{{#ifeq:{{{state}}}|未完成|{{#set:state=已完成}}|{{#set:state=未完成}}}}
解析:
- #ifeq魔术字用法:{{#ifeq: 输入值|对比值|输入值与对比值相同时|输入值与对比值不同时}}
- {{{state}}}:接收state参数
- |未完成|{{#set:state=已完成}}|{{#set:state=未完成}}:将state与未完成对比,如果state是未完成则将state设置为已完成,反之则设置为未完成
这样,在每次访问页面后都会重新调用此判断模板并切换页面的state。
更多细节
- 所有与SWM属性有关的部分都需要强制刷新来更新
- 编辑页面也会导致强制刷新
如何部署
总页面:
{{#ask: [[Category:待办事项]] |?name |?state |?link |mainlabel=- }}
事件页面(现已被整合进模板:待办事项事件):
{{待办事项事件:事件名=A|总页面=分类:待办事项}}
使用教程
在总页面中,使用链接访问事件页面并强制刷新,这时事件页面的状态会被切换,随后使用事件页面中的链接返回并强制刷新总页面。因为状态的切换只会由强制刷新触发,所以失误访问事件页面不会影响状态。
评论整合
- 创建一个评论整合页
- 通过api读取评论
- 通过JavaScript,使用api登录拥有阅读与编辑权限的机器人
- 如果无法登录机器人账户,则尝试通过管理员专用JS直接进行读取和编辑
- 通过api将部分读取到的评论放置进首页,方法:
- 直接编辑首页
- 通过JS修改指定div块内容
已知信息
- 通过js被放置在div块中的内容只能正常显示文字和html(例如<br>),无法使用模板和wiki语法(例如图片,自动排列)