如何修改MediaWiki代码实现全局JS与Vector皮肤专属JS加载?
在MediaWiki中实现全局JS+专属皮肤JS的加载配置
很简单!你只需要在现有的资源模块配置里,仿照skinStyles的写法添加skinScripts字段就行——MediaWiki的资源模块系统对JS和CSS的皮肤专属支持逻辑是完全对称的。
下面是修改后的完整代码,直接替换你原来的片段即可:
$wgResourceModules['zzz.customizations'] = array( 'styles' => "skin.css", // 全局加载的样式文件 // Vector皮肤专属样式(保留你原来的配置) 'skinStyles' => array( 'vector' => 'skin-vector.css', ), 'scripts' => "skin.js", // 全局加载的脚本文件 // 新增:Vector皮肤专属脚本 'skinScripts' => array( 'vector' => 'skin-vector.js', ), 'localBasePath' => "$IP/customizations/", 'remoteBasePath' => "$wgScriptPath/customizations/" ); function efCustomBeforePageDisplay( &$out, &$skin ) { $out->addModules( array( 'zzz.customizations' ) ); }
关键说明:
skinScripts的用法和skinStyles完全一致:键是皮肤名称(比如vector),值是对应的JS文件名- 确保你的
$IP/customizations/目录下存在以下文件:skin.js:所有皮肤都会加载的全局脚本skin-vector.js:仅Vector皮肤会加载的专属脚本- 原来的
skin.css和skin-vector.css也需要保留在该目录下
- 如果以后需要给其他皮肤添加专属JS,只需要在
skinScripts数组里新增条目即可,比如:'skinScripts' => array( 'vector' => 'skin-vector.js', 'monobook' => 'skin-monobook.js' // 新增Monobook皮肤专属脚本 )
内容的提问来源于stack exchange,提问作者Greg Fuller
相关产品推荐
相关产品推荐

