简体   繁体   中英

How to add external <script> to <head> section for all mediawiki pages?

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.

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

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).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM