Пользовательская загрузка MediaWiki skinScripts - PullRequest
0 голосов
/ 09 февраля 2019

Я собираюсь настроить некоторые пользовательские JS и CSS, используя что-то вроде этого в LocalSettings.php, отсюда: 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, который загружается только длявекторный скин, и другой, который всегда загружается.Я хочу сделать то же самое с JavaScript, то есть загрузить JS-файл, который предназначен только для векторного оформления, а также тот, который всегда загружается.

Я вижу из этой документации (https://www.mediawiki.org/wiki/Manual:$wgResourceModules) что skinScripts поддерживается, но я не знаю, как это вписалось бы в приведенный выше код. Может ли кто-нибудь показать мне, как изменить приведенный выше код, чтобы это произошло? Спасибо.

1 Ответ

0 голосов
/ 10 февраля 2019

Документация , на которую вы ссылаетесь, гласит:

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, который поставляется только с этой обложкой.

...