我想将外部脚本添加到MediaWiki中所有页面的头部。

来自 onBeforePageDisplay 钩子(Hook)的函数BeforePageDisplay回调:

//LocalSettings.php
...
# Assign my functions to hook

$wgHooks['BeforePageDisplay'][] ='onBeforePageDisplay';

function onBeforePageDisplay( OutputPage &$out, Skin &$skin )
{
    mw.loader.load('http://static.wowhead.com/widgets/power.js', 'text/javascript');
    $out->addModules( 'mw.loader' );
    return true;
};

在此功能中,我想添加
<script type="text/javascript" src="http://static.wowhead.com/widgets/power.js"></script>
<script>var wowhead_tooltips = { "colorlinks": true, "iconizelinks": true, "renamelinks": true }</script>

Wiki中所有页面的<head>部分。

对于旧版本的Mediawiki,使用OutputPage对象的addScript方法:
$out->addScript( $html )
// Add a JS file. $html is a full script tag: '<script type="text/javascript" src="..."></script>'

但现在



我无法使其正常工作,也找不到任何示例。

ResourceLoader description

Default_modules description

也许我必须使用mw.loader.load模块,但是我不知道该怎么做。请帮助我,对不起我的英语。

P.s. this解决方案有效,但不正确。需要使用过的ResourseLoader的解决方案。 (c)恕我直言

最佳答案

解决方案很简单(看起来像2nd解决方案):

//LocalSettings.php
...
# Assign my functions to hook

$wgHooks['BeforePageDisplay'][] ='onBeforePageDisplay';

function onBeforePageDisplay( OutputPage &$out, Skin &$skin )
{
    $script = '<script type="text/javascript" src="http://static.wowhead.com/widgets/power.js"></script><script>var wowhead_tooltips = { "colorlinks": true, "iconizelinks": true, "renamelinks": true }</script>';
    $out->addHeadItem("wowhead script", $script);
    return true;
};

这种方法看起来比this更好,因为它可以直接与OutputPage一起使用(在解析之后)。

09-30 16:21