帮助:零件
简单
入门
进阶
复杂
开发
零件(Gadget),指储存在页面上的,实现某一特定功能的一组模板、文本、js和css集合,举个例子,就好比是Steam上的游戏mod,可以方便地搬运、删除,用来为自己的维基添加新的功能。
概述
零件的特点——将代码储存在页面上,使得更多的人可以参与到代码的贡献中,也使得代码更容易被更多人分享。与直接将代码粘贴到MediaWiki:Common.js中不同之处在于,零件可以实现模块化,从而可以实现彼此依赖或解耦。除此之外,每个用户可以在特殊:参数设置中自行控制每个零件的开启和关闭(仅限js和css部分)。
如何在Gadget中关联js和css
Javascrip和CSS有缓存,请用?debug=1来调试。
- 将代码储存到
Gadget
命名空间中。如Gadget:module-example.js,
Gadget:module-example.css
。 - 在
Gadget definition
命名空间下编写Gadget定义文件。例如Gadget definition:example
。定义文件是json格式,placeholder已经写好。关联的css文件应填写在“style
”里,js文件则填写在“script
”中。如果该零件是面向所有用户的,只要在default
那里填true
就行了。详情见下表。 - 用户可以在个人设置的小工具中,自行开启或关闭一些零件。在该页面中零件的名字需要到
MediaWiki:Gadget-example
中进行定义 - 如果这组gadget只在本维基启用,那么已经完成了!如果想分享给更多人,建议将它发布至灰机灰机workshop。
Gadget_definition | 作用 | 示例 | 默认效果 |
---|---|---|---|
settings.right | 只有拥有这个权限的用户才能启用这个gadget。 | ["edit","editinterface"]等。 | 不需要权限 |
settings.default | 是否默认向所有拥有权限的用户启用。 | true, false | 不启用 |
settings.hidden | 是否在用户设置页面隐藏该gadget。 | true, false | 不隐藏 |
settings.skin | 应用该gadget的皮肤。 | bootstrapmediawiki | 所有皮肤 |
settings.category | 该Gadget的分类。 | 无 | |
modules.scripts | Gadget命名空间下的js页面。 | ["script.js"] | 无 |
modules.styles | Gadget命名空间下的css页面。 | ["style.css"] | 无 |
modules.peers | 该模块所依赖的CSS-only模块名。Peers将会早于页面加载。 | ["ext.gadget.mycssgadget"] | 无 |
modules.dependencies | 该模块所依赖的模块。模块将会早于当前gadget加载,但是晚于peers和页面加载。 | ["ext.gadget.myothergadget"] | 无 |
modules.message | MediaWiki命名空间下的文本。 | ["some-localizations"] | 无 |
modules.type |
|
style, general | 目前有一个上游的bug,导致默认是style+general执行两次。(样式加载两遍)。以后会变为默认general。 |
自定义加载
很多情况下,全局默认加载并不能满足开发者的需求。在javascript代码中,可以自由的调用其他已存在的零件。
//假定我们填写了Gadget_definition:example。
if (mw.config.get('wgPageName') == 'Example')
mw.loader.load('ext.gadget.example');//仅在Example页面加载该Gadget。
mw.loader.getState('ext.gadget.example');//获得example的加载状态。ready为已加载,registered为未加载,null为零件不存在。
如何在灰机workshop发布零件
- 将所需的页面搬运至灰机workshop。
- 在
Manifest
命名空间下创建一个页面,填写Manifest的json。一部分代码已为您填好。 - 在
page
一栏内,键填写用到的页面名称,值填写历史版本,如果使用最新版本可以填*。 - 在
map
一栏内,键填写灰机workshop上的页面名。值填写下游维基的页面名。如果名称不变,可略过。 - 为零件添加说明文档。
- 您的零件已经发布完毕了!灰机工作人员会选择优秀版本推荐到灰机Workshop首页。
示例
互动地图是由@Honestleaf编写的一组零件。
它包含5个文件:
- MediaWiki:Gadget-map
- Gadget:InteractiveMap.js
- Gadget:InteractiveMap.css
- Gadget_definition:map
- Template:Map
它的定义页面是Templatemanager:Manifest:互动地图。查看该页面的源代码来学习如何编写定义。
因为代码已经在灰机workshop发布,所以点击 安装零件 就可以将之导入你的维基。
除此之外
零件除了包含js和css以外,还可以包含任何基于维基页面的内容。比如UI语言、译名表、样式集、Data等。零件允许维基开发者打造无限可能的自定义功能。
来自灰机wiki