自定义加载MediaWiki skinScripts

问题描述 投票:1回答:1

我将在LocalSettings.php中使用类似的东西设置一些自定义JS和CSS,从这里开始:https://www.mediawiki.org/wiki/Snippets/Load_an_additional_JavaScript_or_stylesheet_file_on_all_pages#Code

$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,但我不知道它如何适合上面的代码。任何人都可以告诉我如何修改上面的代码来实现这一目标吗?谢谢。

mediawiki
1个回答
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文件。

© www.soinside.com 2019 - 2024. All rights reserved.