自定义加载MediaWiki skinScripts

时间:2019-02-09 01:37:16

标签: mediawiki

我将在LocalSettings.php中使用类似的方法从此处https://www.mediawiki.org/wiki/Snippets/Load_an_additional_JavaScript_or_stylesheet_file_on_all_pages#Code

设置一些自定义JS和CSS
$wgResourceModules['zzz.customizations'] = array(
    'styles' => "skin.css", // Stylesheet to be loaded in all skins
    // Custom styles to apply only to Vector skin. Remove if you don't use it
    'skinStyles' => array(
        'vector' => 'skin-vector.css',
    ),
    // End custom styles for vector
    'scripts' => "skin.js", // Script file to be loaded in all skins
    'localBasePath' => "$IP/customizations/",
    'remoteBasePath' => "$wgScriptPath/customizations/"
);

function efCustomBeforePageDisplay( &$out, &$skin ) {
    $out->addModules( array( 'zzz.customizations' ) );
}

此代码显示了一个自定义CSS,该CSS仅针对矢量外观加载,而另一个始终加载。我想对JavaScript进行同样的操作,即加载一个仅适用于矢量皮肤以及始终加载的JS文件。

我从该文档(https://www.mediawiki.org/wiki/Manual:$wgResourceModules)中看到skinScripts受支持,但是我不知道它如何适合上述代码。谁能告诉我如何修改以上代码以实现这一目标?谢谢。

1 个答案:

答案 0 :(得分:0)

您链接的documentation说:

  

skinScripts
  要包含在特定皮肤上下文中的脚本。
  用包含文件路径字符串或文件路径字符串数组的外观名称作为键的数组。

skinStyles条目并没有太大区别,因此我认为类似的方法会起作用:

$wgResourceModules['zzz.customizations'] = array(
    'styles' => "skin.css", // Stylesheet to be loaded in all skins
    // Custom styles to apply only to Vector skin. Remove if you don't use it
    'skinStyles' => array(
        'vector' => 'skin-vector.css',
    ),
    // End custom styles for vector
    'scripts' => "skin.js", // Script file to be loaded in all skins
    'skinScripts' => array(
        'vector' => 'skin-vector.js',
    ),
    'localBasePath' => "$IP/customizations/",
    'remoteBasePath' => "$wgScriptPath/customizations/"
);

function efCustomBeforePageDisplay( &$out, &$skin ) {
    $out->addModules( array( 'zzz.customizations' ) );
}

vector是皮肤的名称,skin-vector.js是仅与该皮肤一起使用的JavaScript文件。