How to add external [removed] to <head> sect

2019-04-28 08:43发布

问题:

I want add external script to head section for all pages in mediawiki.

Function onBeforePageDisplay callback from BeforePageDisplay hook:

//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;
};

In this function i want to add

<script type="text/javascript" src="http://static.wowhead.com/widgets/power.js"></script>
<script>var wowhead_tooltips = { "colorlinks": true, "iconizelinks": true, "renamelinks": true }</script>

to <head> section for all pages in wiki.

For old versions of mediawiki used addScript method of OutputPage object:

$out->addScript( $html )
// Add a JS file. $html is a full script tag: '<script type="text/javascript" src="..."></script>'

but now

For MediaWiki 1.17 and above, use ResourceLoader modules.

$out->addModules( array( /modules/ ) );

I could not make it work and don't find any examples of this.

ResourceLoader description

Default_modules description

Maybe I have to use mw.loader.load module, but I have no idea how to do it. Help me, please, and sorry for my english.

P.s. this solution work, but is not right. Need solution with used ResourseLoader. (c)IMHO

回答1:

Solution was simple (it looks like 2nd solution):

//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 way look better then this, because it work with OutputPage directly (after parsing).