- 欢迎来到THBWiki!如果您是第一次来到这里,请点击右上角注册一个帐户
- 有任何意见、建议、求助、反馈都可以在 讨论板 提出
- THBWiki以专业性和准确性为目标,如果你发现了任何确定的错误或疏漏,可在登录后直接进行改正
用户Wiki:Gzz
一些有用的东西
关于 InPageEdit (IPE)
可能很多人不知道,继续努力少女给的最有用的东西是 IPE1(
我写这段的时候,IPE 在全站只有 19 个用户……
在 参数设置-小工具 里就可以开启,然后在 IPE 的设置里勾选 CodeMirror 6 插件,刷新之后再去页面右上的 更多-CodeMirror插件2 里开启想要的功能,即可打开新世界的大门.
- 除了设置里写的功能之外还有很多快捷键,见 官方帮助(需要翻墙)
- 其中我最常用的应该是 Alt+↑/↓ 上下移动行、⇧ Shift+Alt+↑/↓ 复制行、Ctrl+D 多次选中3,还有 Ctrl+1-6 设置标题.
- 不过里面有几个快捷键是不能用的,可能是版本问题?我还发现过一个里面没写的,Alt+L 可以选中当前行……
- 另外不要忘了去浏览器字体设置里换一个适合显示代码的等宽字体.
说实话,默认编辑器连语法高亮都没有,这和记事本写代码有什么区别(恼)
不过 IPE 也不是完美的,至少有以下两种情况还是需要用默认编辑器:
- 需要编辑建议/编辑提示的时候.这些是其他插件实现的,IPE 当然是没有这种功能的;
- 需要预览真实显示效果的时候.IPE 的预览里面会缺少一些 THBWiki 的样式,虽然能改出来,但是某些依赖 JavaScript 的动态效果是没办法的.
对于第二种情况,其实是有办法在使用 CodeMirror 6 的同时获得真实预览的.我偶然发现过一个
但是第一种情况大概是真没办法了,如果尝试用上面那个方法启动 CodeMirror 6,编辑提示还是会失效……
- 更新:
CM6 的 3.4.0 版本后这个方法失效了,但是同时还出现了一个 bug,在页面中第一次打开 IPE 的时候 CM6 是没加载的,关掉再开才会有.所以我觉得等这个 bug 修了之后说不定就能恢复.
我在下面的第一个脚本里加了个进入页面时打开并关闭一次 IPE,就可以让 CM6 加载出来,先这样凑合一下(
我写的两个小脚本
可以让 IPE 的预览与页面实际显示一致.添加的快捷键与默认编辑器里的基本相同,比如 Alt+P 预览.
此外还会在有 IPE 窗口打开或关闭时聚焦最上层窗口,可以让键盘操作更连贯,比如按第二次 Alt+P 可以关闭预览并让光标回到编辑器内.
编辑时每隔 5 秒自动保存一次内容到本地,防止意外丢失.并且也能保存 Wiki 默认编辑器的内容.
另外,本来 IPE 编辑时,更改了内容之后如果关闭编辑器,或者关闭/刷新网页,就会提示是否确认,但是开了 CM6 之后就没有这个提示了.脚本里恢复了这个功能.
关于模板调试
修改模板时,传统的做法是改完再去另一个页面测试,这样会经常需要反复两头跑.其实如果修改只涉及一个模板的话,是可以在改的同时预览效果的,只需要将测试内容放在 <noinclude> 里就行了.
像这样:
<includeonly>{{#expr: {{{1}}} + {{{2}}} }}</includeonly><!--
--><noinclude>{{沙盒|1|2}}</noinclude>
如果涉及多个模板,也可以把较简单的那个模板的代码复制过来.比如要同时改列表框架和列表项目的模板,就可以把框架复制到列表项目模板的页面里测试.
关于 Wiki 的搜索功能
Wiki 的搜索除了直接搜关键词之外还有很多高级功能,挺好用的.
详见 Wikipedia:Help:Searching,这里简要介绍一下.
基础功能:
- 和大部分搜索引擎一样,Wiki 搜索可以用双引号
"..."表示精确匹配,不用的话会自动分词. - 在搜索词前面可以加
-或!或NOT来排除. - 搜索词之间默认是以
AND连接,也可以用OR.- 但是
OR的限制比较大,必须所有词之间都用OR才能正常工作,而且搜索词也不能用下面提到的特殊关键字. - 也无法用括号
(...)来指明结合次序,会被忽略.
- 但是
- 有通配符
*或者\?,但是只能在一个单词里面用,对中文搜索一般没啥用.还有~后缀,放在单词末尾可以模糊搜索,就更没用了. - 常见的符号
!@#$%^&()_+-=~`{}[]|\:;'<>,.?/以及它们的全角版本都会被当做空格,所以只能搜文字.- 本来 Wiki 有正则表达式搜索功能,可以用来搜特殊符号,但是 THB 禁用了所以就完全没办法了.
特殊关键字:
intitle:可以只在标题里面搜索(不包含命名空间),不加的话默认是同时在标题和内容里搜索.insource:可以在页面源码里面搜索,而默认是在页面渲染之后实际显示的文字里搜索.这个知道的人应该比较多,也是最常用的.- 上面两个一般要配合双引号使用,不然容易被分词,比如要用
insource:"...". - 另外,如果要搜索多个词的话得每个前面都加上关键字.
- 比如写
insource:code nowiki是在源码里搜code同时在页面显示的文字里搜nowiki. - 写
insource:"code nowiki"只会搜索连在一起的两个词(但是中间可以夹着符号),也不行. - 写
insource:code insource:nowiki才是搜在源码里同时包含这两个词的.
- 比如写
- Wiki 本来有语法
intitle:/.../或者insource:/.../可以搜正则表达式,但是 THB 禁用了.- 比如如果搜
insource://会得到提示搜索时发生警告:insource需要一个非空的正则表达式。 - 但是如果写一个简单的表达式
insource:/\d/却会得到搜索时发生错误:此查询无法理解。请将其简化。查询已被记录以改进搜索系统。
- 比如如果搜
- 上面两个一般要配合双引号使用,不然容易被分词,比如要用
- 各种命名空间都有对应的关键字,比如
file:只在文件里面搜索.但是因为高级搜索里面可以勾选命名空间,所以这个一般用不上.- 有个
all:可以在所有页面里搜索.
- 有个
incategory:可以在分类里搜索,不会分词.- 比如
incategory:封面图片 insource:"分类:封面图片"可以搜索手动写了封面图片分类的封面.当然这种是错误的所以已经都改掉了. - 再比如我用过一个
insource:"时长" -incategory:同人专辑搜(可能)使用了时长参数的非同人专辑页面.
- 比如
deepcategory:可以同时在分类的子分类里面搜索.- 但是在 THB 被禁用了,会得到
搜索时发生警告:$wgCirrusSearchCategoryEndpoint应设置为有效的SPARQL端点以使用深度分类搜索。
- 但是在 THB 被禁用了,会得到
linksto:可以在指定页面的链入页面里搜索,不包含嵌入.hastemplate:可以在包含某个模板的页面里搜索.- 当然也可以不局限于模板,比如
hastemplate::首页/二次同人可以搜到嵌入了 首页/二次同人 的页面(在最前面加冒号表示主命名空间).
- 当然也可以不局限于模板,比如
subpageof:可以在指定页面的子页面里搜索.prefix:可以搜索标题以特定字符串开头的页面,和 特殊:前缀索引 功能相同.- 会把后面所有字符包含进来,包括空格,所以必须作为最后一个搜索词.
- 也可以包含命名空间,如果写
prefix:游戏对话:就是只在游戏对话命名空间里面搜索.
可重复获得成就的计分方式
好吧,其实能重复获得的也就周编辑和月编辑排名的那几个了(
据我的观察,再次获得同一个成就时分值会是上一次的 [math]\displaystyle{ 0.75 }[/math] 倍,并且总分是以浮点数保存的,显示出来时会四舍五入.
因为我某次获得周编辑第三的时候已经只加 [math]\displaystyle{ 1 }[/math] 分了,然而再下一次获得却加了 [math]\displaystyle{ 2 }[/math] 分,这说明是有四舍五入的过程.
所以很显然,从一个成就里能获得的最高分数是面板分数的 [math]\displaystyle{ 4 }[/math] 倍:
并且这是能达到的,并不需要获得无数次,因为有四舍五入(
主要做过的事
人气投票相关
建设和维护两个人气投票的页面:
- 东方系列人气投票(日文投票)
- 东方Project人气投票(中文投票)
主要是日文投票,因为它比中文的麻烦太多了……
另外还做了个用暴力搜索实现的人气投票查询,可以查询某个角色或者某首曲目在每一回投票的数据:
其中使用的两个模板:
官方音乐列表
修改前的版本:官方音乐列表
这页面不知道为什么以前没用音乐名模板,而且后面东方幻想的音乐那部分还是一大坨的 HTML 表格……4
我把模板改成了只写作品和编号就能得到日文和中文名,一直不理解为什么有那么多模板是要写一遍中文名模板然后还得再写一遍日文名的……
改完之后感觉要改改全套吧,又去把 CD、OST 的模板也改成这种模式了,详见 模板:官方CD曲目列表/doc.
符卡相关
符卡名模板
以前 符卡列表 也是一直没有模板的,也没用符卡名模板,手打的符卡名错误很多.
于是我想去做个模板,但是有个问题:
- 英文符卡的中文翻译都是手动加在后面的,比如
{{古明地恋符卡名|1|DLD|4}}以前只会出来一个抑制「Super Ego」,后面的(超我)是要手动补上的……- 于是如果要做成模板的话每个符卡还是得自己补括号,不是只填个序号就行,这太蠢了()
在群里问了下才知道原来这是个远古巨坑…… 总之经过讨论之后决定把翻译写进 映射方案,符卡名模板则是改成了现在的样子:帮助:符卡名模板
然后我写了模板,用它做了一版符卡列表:
不过因为一些原因后来没继续做了.
相比把翻译加进映射,主要的工程量在于还得改 3000 多个使用了符卡名模板的页面,其中大致有这些类型:
- 符卡页面.这是最主要的部分,在我改的时候一共有 1359 个符卡,加上它们的子页面之后有 2600 多个5;
- 作品的关卡/角色符卡子页面,比如 东方红魔乡/Stage 1、东方文花帖/Level 1、东方萃梦想/博丽灵梦,共有 421 个;
- 两部魔法书 The Grimoire of Marisa、The Grimoire of Usami 的内容页面,约有 100 多个;
- 官方角色页面;
- 官方角色符卡导航;
- 其他零碎的页面.
新的符卡名模板因为默认自带后面的括号,所以会导致页面里出现大量红链,符卡图片的引用也会出问题,需要改成新格式.另外还需要去掉以前手动加的那些括号.
具体过程见下面两节.
符卡登场信息
符卡页面也是本来没模板化的,以前的写法是下面每部作品的每张符卡引用了图片之后,还得在顶上的表格里写一遍中文名和日文名6.这样需要写很多个符卡名模板7,很冗余,而且容易出错.
我觉得应该写完其中一个地方之后另一个自动生成才对,最后用神奇的 #var_final 实现了:
并且在不增加填写信息的情况下实现了新功能,目录里可以自动生成每张符卡的登场作品,还能链接到下面对应的截图处.
新模板是兼容新的符卡名映射格式的,所以顺带完成了修正符卡名模板的修正.
写模板的时候还遇到了多张截图命名格式不统一的问题,有三种格式:
| 序号 | 格式一 | 格式二 | 格式三 |
|---|---|---|---|
| 1 | X符「XXX」(作品名).png | X符「XXX」(作品名)-1.png | X符「XXX」(作品名1).png |
| 1 | X符「XXX」2(作品名).png | X符「XXX」(作品名)-2.png | X符「XXX」(作品名2).png |
| 1 | X符「XXX」3(作品名).png | X符「XXX」(作品名)-3.png | X符「XXX」(作品名3).png |
| ⋮ | ⋮ | ⋮ | ⋮ |
| 总数 | >700 | 346 | 161 |
第一种的数量比后面两种加起来还多,所以毫无疑问统一成第一种了.
改的时候我先是写了两条超长的正则替换,分别替换单张截图和多张并列图像
^(===\s*([^=\s]+)\s*===(?:(?!\n===[^=])[\s\S])*?)\{\|\n\|-\n\|[^\{]*\{\{([^\|]+)符卡名[^\}]*\|([^\}]+)\}\}[^\.]*\.([^\|]+)\|.*\n\|\n(.+)\n\|\}\n\{\{-\}\}
↓
$1{{符卡登场信息|\n|角色 = $3\n|作品 = $2\n|编号 = $4\n|图片格式 = $5\n|描述 = $6\n}}
^(===\s*([^=\s]+)\s*===(?:(?!\n===[^=])[\s\S])*?)\{\|\n\|-(?:(?!\|\})[\s\S])*image(\d+)[^\{]*\{\{([^\|]+)符卡名[^\}]*\|([^\}]+)\}\}[^\.]*\.(.+)\n(?:(?!\|\})[\s\S])*\n(.+)\n\|\}\n\{\{-\}\}
↓
$1{{符卡登场信息|\n|角色 = $4\n|作品 = $2\n|编号 = $5\n|图片数 = $3\n|图片格式 = $6\n|描述 = $7\n}}
然后一个一个页面去替换人肉批替机,这样手动改了 600 多个页面,同时还要移动文件……
最后还是烦了,于是去学了一下 API 怎么用,然后发现 API 的功能比我想像的强太多了,就马上写了个脚本把剩下的页面一口气改完了.
顺便提一下上面正则表达式里 (?:(?!\n===[^=])[\s\S])*? 这东西写这么复杂是因为填入模板的作品名要从三级标题里拿8,所以用 (?!\n===[^=]) 防止跨作品,因为是从前往后匹配的.
其他页面的修正
官方角色页面因为流量比较高,所以加了对应角色的映射之后需要优先修正.本来应该都要换成新的 符卡引用模板,从作品的符卡子页面里引用,但是当时很多作品的符卡列表还没做好,我就先修改了旧模板 符卡信息、符卡信息2、符卡信息3,暂时顶替.
作品的关卡/角色符卡子页面也是一个个作品去改的,没法完全自动化,因为很多页面在引用符卡截图时没用符卡名模板,是直接写的符卡页面名.
符卡导航直接批量替换解决,只要全改成 注=0|链=1 就行了.
最后还剩下各种分析考据页和其他零散页面,就是等映射全部加好之后用脚本批量检查和修改了.
具体来说是做这些替换:
[[{{...符卡名...}}]] → {{...符卡名...|链=1}}
{{#lst...{{...符卡名...}}...}} → {{#lst...{{...符卡名...|注=0}}...}}
[[(文件|File)...{{...符卡名...}}...]] → [[(文件|File)...{{...符卡名...|注=0}}...]]
[[{{...符卡名...}}|显示文字]] → [[{{...符卡名...|注=0}}|显示文字]]
然后再将符卡名模板 {{...符卡名...}}(...) 后面紧跟着的括号内容收集起来9,与映射里的对比,不同的话就输出出来检查.这种情况有可能是翻译与映射里的不同,因为以前都是手动写括号,很难统一译名,也有可能括号里只是单纯的说明文字.如果确实是符卡名翻译就把括号去掉,其中翻译不统一的收集起来.
总共批量修正了 600 多个页面,并整理出来了所有需要检查的译名,放在了沙盒里:固定链接
技能信息
对机体说明的改造需要更灵活的模板,以前的 模板:符卡技能信息 格式固定并且比较简陋.而且也没有和翻译表结合,文本是手动填的,这种现在都要尽量换成 {{#ttt:...}} 引用.
于是尝试写了新的模板:
需要填写的内容很少,只需要指定单元格里
#ttt 的是什么内容,就可以同时生成中日两份表格,用 <tabber> 切换.
在格式上基本没有什么限制,有内容的单元格会优先往右扩展,再往下扩展.不能同时往右和下,也就是说单元格只能是 [math]\displaystyle{ 1 \times n }[/math] 或者 [math]\displaystyle{ n \times 1 }[/math],感觉应该不会有要 [math]\displaystyle{ n \times m }[/math] 的情况吧……
目前已经用在了 心绮楼、深秘录、凭依华 里.
不过现在模板运行速度还是偏慢,Wikitext 写循环真是太慢了…… 准备以后用模块重写了再考虑推广.
模板的实现方式是先生成内容都是文本形式的 {{#ttt:...}} 的表格,最后一步再解析.我测了下有 [math]\displaystyle{ 40\% }[/math] 的时间花在循环生成表格上了,所以提升空间应该不小.
拆分游戏对话气泡
游戏对话已经都用上了简单对话,但是 2022 年以前的作品的翻译表页面基本都是一格好几段话,没拆开.
这样到了简单对话里就会是…… 比如这种样子:
啊,糟糕了——
姐姐一个人怎么可能赢啊
在战斗中完全派不上用场
浑身阴暗穷酸还小气巴巴
自己什么事都不会做
整天抱怨个不停
什么优点都没有
姐姐一个人要怎么——
说到底
一次都没有胜利过的贫穷神
偏偏要单挑
专门解决异变的巫女——
我已经绝望了——
这次是完全失败啦——!
所以需要在翻译表那边分块好,简单对话才会是一段一个气泡.
我写了个脚本来做这事,除了分块之外还补上了漏加的 remark, name, bgm 标记,把没用音乐名/称号模板的换成模板,补了漏的角色罗马音,以及改了别的我能发现的小问题.
同时也改了链入页面里的引用,也就是 [[游戏对话:...#Stage 1-20]] 和 {{#ttt:游戏对话:...|Stage 1|20-22}} 这种东西,因为分块之后行号会变化10.
改这个引用可以说比分块本身还麻烦,如果要一个个页面去手工改的话感觉要累死…… 我当然不会愿意手工,所以在程序里实现了半自动化,改完一个页面之后会进入链入页面里查找引用并改成新的行号.如果引用的那段被拆开了,就把上下文和新的行号范围以及翻译表内容输出,然后人工选择.最后总共写了 700 多行 python…… 不过这样改起来算比较轻松了.
目前整数作除了旧作和花映塚都已经改完了,还剩下格斗作、花映塚、旧作,暂时没时间改了.其中花映塚的分段乱得离谱,绯想天则是完全没有分段,这些得人工了……
活动相关
摊位表社团检查
SMW 不会自动转换大小写、全半角等,所以如果摊位表里用的社团名和词条名有不同,社团页面的参展信息模板就可能无法获取到此次展会的信息,需要建立重定向.
以前都是人工检查,工作量非常巨大.但是这项工作其实用 Wiki 现有的函数就能做到,所以搞了个模板:
后来发现用 {{msgnw:...}} 可以获取页面源码,所以又做了个更方便的版本:
不过要是一个个表去查还是很麻烦,所以用脚本直接一次检查了全部摊位表:
另外还顺便检查了别的词条和社团撞名的情况.
演出社团人员列表
这似乎是活动页面里唯一没有模板化的地方,于是就做了(
同时修改了 模板:展会单届 让它提供各届活动名给下面的演出参与信息用,还可以自动创建链接.这样就将需要自己填的内容减到了最少.
写完之后发现原来有海有个咕掉的 模板:活动演出社团()
2025/7/28 已将所有活动页面里的“演出社团及人员”换为模板.
更新发售展会建议
由于众所周知的原因,发售展会建议 一年多没人更新了,于是尝试更新了一下.
先是借鉴了一下 模板:展会名模板目录列表 的思路获取了所有展会的每一届,本来是想把建议列表完整生成一遍,然后发现数字通配符 @ 实在太麻烦了,因为很多展会名用了汉字数字,就摆了,只加新增的展会了(
另外把只写了中文名或者只写了日文名的补上了双语的名字.
帮助文档 · 代码演示模板
以前一直对 帮助:常用代码 有点不满意,因为表格左边展示的代码运行之后和右边的结果经常不是完全一样的.
发现了强大的 #rawparam & #exeparam 函数之后我觉得可以写一个模板,填了源码进去之后可以在页面上同时展示源码和运行结果.然后我还想到 预览图片模板 里有个在上传文件时自动添加分类的功能,那么有没有可能实现点一个链接就能跳转沙盒并把代码填进去的功能呢?很多教程网站就是类似这样的嘛(
结果最后真的成功了:
然后改了下常用代码,做了很多调整,比如把标题和链接的介绍移到前面,以前居然是放在结尾的(???).介绍 HTML 标签的部分把 <font> 换成了 color 函数,<center> 换成了 模板:center11,也把某些过时的 HTML 属性换成了对应的 CSS.还有其他各种调整和补充.
以后还有计划写 帮助:特殊代码、帮助:常用模板、帮助:解析函数,还想写一篇 帮助:编写模板.
现在常用模板里就只有几个分类链接,进阶代码里介绍的基本上都是些模板,这些才是应该放到常用模板帮助的吧(
可筛选的列表(用于 CP、捏他列表)
改造二设页面需要把 CP 类设定移到 东方CP列表,捏他类设定移到 捏他列表,那么跳转过去还得页面内搜索的话感觉不太方便,所以我觉得可以仿照 展会作品列表 搞个筛选.
于是做了:
还有配套的
可以在二设页生成筛选对应角色的链接,非常方便.
捏他列表那边我感觉既然想筛选角色的话得把涉及的角色都加上,那为什么不更进一步,直接做成 tag 系统呢?也允许按其他各种各样的东西来筛选.
所以做了:
作品和角色 tag 需要手动写在上面的筛选模板里,剩下的 其他tag 在下面填了之后会自动收集到上面的筛选器里,当然 tag 也能点击筛选.为了防止密集的 tag 喧宾夺主,还给 tag 做了个半透明效果,不过感觉不是最优解.
这个模板目前保持和以前捏他列表的样式一样,是列表套
; :,其实也可以考虑美化一下,做成卡片形式?以后再看吧(
另外还有一个 东方角色日一览 也可以做成筛选,不过一样得手动加上相关角色,而且我发现这列表里居然没记录角色日的日文原文,这种绝大部分来源于日本的东西居然不加日文…… 要加的话感觉也有点天坑了,暂时没时间搞.
其他零碎东西
写的模板:
给符卡相关的模板使用.
大体上相当于是 <code><nowiki>...</nowiki></code>,也有同时展示代码运行结果的功能,相当于单行版的 模板:代码演示.
其实是搬运的 Wikipedia,为了在居中一块文本时不改变内部对齐.用在了机体说明里.
在上传二次角色立绘的时候可以自动添加分类.因为总是有人传图不加分类所以就做了,不过角色分类不一定能正确生成,需要检查.
可以去除别的模板添加的分类,写草稿/帮助文档的时候有用.而且这样也可以安心在用户页用官方角色模板了?(雾)(请勿污染官方角色分类.jpg)
改的模板:
官网会取手动填写内容与自动获取内容的并集.以前是填了官网之后就不会获取 THB 上记录的,比较奇怪.
把 <div> 改成了 <span>,这样才方便在文本内部用.这个模板 16 年就有了,但是却完全没推广开,而且常用代码里以前还教的是 <div id=...>,很奇怪.
加了个参数写时光机链接,因为手动写有点麻烦而又经常需要写.
这模板以前很奇怪,个人页面 参数看模板里的意思,应该是在网站没有内置参数时,用来自定义的,比如写了 个人页面 = XXX 之后可以再写 XXX = ...,所以平时应该用不上.但是如果不填这个参数,同时也没填 官网页面 的话,所有网站都显示不出来.而这个参数的编辑建议里给的却都是模板里有内置的网站12,所以以前的人物页面全都是填了内置的网站.
于是我去改成了不必填,并且允许指定多个自定义网站参数,而且每个网站也允许写多个 url,因此还废弃了 blog2 参数,如果使用的话会进错误分类.
使用例:ナノ
利用了 #rawparam,用音乐名模板填了曲名(日文名)之后可以自动生成中文名和英文名.另外允许 原曲/相关曲 填多个,为了换掉 模板:官方曲目信息+,这模板以前做出来好像就只是为了给 凭依华 这一首曲子写 6 首原曲……
以前英文名都是一个个页面手动加上的13,但是还是有很多没加的.数了下之前 627 个原曲页面里有 292 个没加上英文名的,现在改完模板就都自动加上了.
非模板:
- 因为维基共享资源要用不了了,所以查出来所有来自共享的图片然后批量上传了,一共就 100 多张,比想像的少.
计划做的事
- 东方角色日一览 改成可筛选列表.
- 游戏对话里剩下的部分(旧作、花映塚、格斗作)的分块.
- ZUN 的各种采访、访谈、演讲会要移动到子页面.
- 目前有这些周边没放在社团子页面,要移动:
目前 THB 里的分类非常混乱,有大量 未分类的分类,和很多感觉像是一拍脑袋就加上的不存在的分类.
已经整理了一些,比如 分类:官方分类,以前这些官方相关分类基本上都是未分类的,收集起来全放进去了,感觉上还可以细分但是暂时没想好怎么分.
目标是 计划表 里说的建立一个总分类,当然就是选 分类:系统维护 了,然而现在未分类分类还有 200 多个,真可怕……
清理旧模板的话得等能删东西了才方便做.
记一些东西
以前有很多以(视频)结尾的页面,想用来记录视频,但是坑了,其实本来 Wiki 也不适合用来做这个.
留下的一大堆页面之前删过一部分,但是还有很多.于是我把全部的都查出来了,有 206 个,找出了其中 100 字符以下,也就是完全没内容的,已经删了.
但是还剩 27 个有内容的暂时不知道怎么处理:
| 目前尚存的视频目录 |
|---|
搞 符卡投票 表格的时候发现符卡名映射里有些日文名写错了,然后基本上改过来了,但是还剩一个,*幻视吧!目睹异世界的狂气* 这玩意的感叹号后面其实是有个全角空格的,看看以后有没有机会改了(
符卡截图目前萃梦想和绯想天的缺了很多,后面的本来都是齐的,但是我改符卡的时候发现深秘录有两张名字不同的符卡被合并写了,共用了截图(链接),于是我改过来之后深秘录也缺截图了(
而且我没去确定还有没有其他误合并的.
还有后来发现纯狐的时符 溢出的瑕秽 的截图也不太对劲,居然是开无敌站着不动截的,都要认不出来了()也得看看有没有人有空去换.
以前只有 分类:封面图片不明的同人作品,不填的话就是不明,没有表示无封面的方法,而封面角色却同时有 分类:封面角色不明的同人作品 和 分类:没有封面角色的同人作品.
于是现在加上了 分类:没有封面图片的同人作品,需要把封面不明的作品里面真的没封面的改到这个分类,那些 arrange 应该基本都是要改的.
属性:社团状态 刚加了允许值,于是 特殊:处理错误列表 里有 60 多个状态未知的要改.
其他
MW 迷惑行为大赏
写模板的时候时常会被 MediaWiki 的各种神秘行为气晕,遂开这一节记录一些(
|
{{#vardefine:b|*2}} {{#vardefine:a|1{{#var:b}}}} {{#tag:pre|{{#var:a}}}} |
1 *2 |
这样中间会神秘多出个换行,星号换成其他放在行首的 Wiki 标记比如
# ; : 也是会换行…… 这是为了能让符号出现在行首被成功解析吗?
不止 Variables 系列,别的一些函数似乎也有这种行为.
来自不同扩展的函数的行为经常会不同,比如字符串操作的那些函数 #sub、#explode 等会把内容里的 <ref></ref> 去掉,但是 Arrays 扩展的 #arraydefine & #arrayprint 就不会.
某次我还发现 #arraymap 在内容包含 | 的时候可能会有意料外的行为:
|
{{#vardefine:a|古明地觉{{!}}小五,古明地恋{{!}}恋恋}} {{#arraymap: {{#var:a}} |,|@| {{#addlink:@}} |、}} {{#arraydefine:a| {{#var:a}} |,}} {{#arrayprint:a|、|@| {{#addlink:@}} }} |
但是 Arrays 依然坚挺.这应该是因为
#arraymap 会把字符串直接插入进去再解析,也就是说运行的是 {{#addlink:古明地觉|小五}},这样第二个参数就被忽略了.而 Arrays 的函数会对管道符做特殊处理,防止被解析成 Wiki 语法.只能说,Arrays 你好强大……
如果在 模板:沙盒 里输入以下代码
<includeonly>
{{#vardefine:a|1}}{{{1}}}
{{#vardefine:a|2}}{{{1}}}
</includeonly><noinclude>{{沙盒|{{#var:a}}}}</noinclude>
得到的结果居然是 1 1 ……
如果换成
<includeonly>
{{{1}}}
{{#vardefine:a|1}}{{{1}}}
{{#vardefine:a|2}}{{{1}}}
</includeonly><noinclude>{{沙盒|{{#var:a|0}}}} {{#var:a}}</noinclude>
得到的是 0 0 0 2 ……
这大概说明,模板多次用到同一个参数的时候,只会把第一次出现时的值算出来,然后用到后面的所有地方…… 这可能是为了在传入的参数比较复杂时防止每个用到的地方都要计算一次,但是如果我真的想在不同的地方得到不同的参数值呢?寄.
不过后来我发现有海写的扩展里的 #rawparam & #exeparam 可以解决这个问题:
<includeonly>
{{#vardefine:a|1}}{{#exeparam: {{#rawparam:1}} }}
{{#vardefine:a|2}}{{#exeparam: {{#rawparam:1}} }}
</includeonly><noinclude>{{沙盒|{{#var:a}}}}</noinclude>
因为是获取了参数源码然后再解析,当然是每次分别计算了.
顺带一提我感觉这两个函数简直强得犯规了,用它们可以做到很多传统上不可能做到的事,尤其是那个
#exeparam 是可以解析任何文本的,相当于很多语言里的 eval() 了.
应该还有很多但是我暂时想不起来了((
官方 MIDI
注释
- ↑ 虽然除此之外也就一个免验证码了(小声)
另外其实就算没权限也有办法改出来的(更小声)(神秘链接) - ↑ 插件的插件的插件(雾)
- ↑ 需要开启“允许选择多个片段”.这个选项还有一个功能是按住 Ctrl 时可以左键放置多个光标
- ↑ 看起来是囧仙当年想做什么东西,但是坑了于是就遗留下来了……
- ↑ 子页面主要是分析与考据,还有少量游戏资料
- ↑ 又是我看不惯的要写两遍名称模板的……
- ↑ 如果符卡有多张截图的话那每张截图都要写一遍,很吓人
- ↑ 因此需要反复替换直到结果不变
- ↑ 甚至有用半角括号的…… 被坑了一下
- ↑ 吐槽一下真的很多人不知道改了翻译表之后要改引用这件事,见到过不少遗留的错误引用
- ↑ 为了让这个模板能居中画廊和表格,我还写了点 CSS.本来按理是应该写进全站 CSS 里的,但是我改不了就只能先用 templatestyles 了
- ↑ 这甚至还是人物页面里唯一的编辑建议
- ↑ 又是我不喜欢的重复写模板