我想为mediawiki中的所有页面添加外部脚本到head部分。
来自BeforePageDisplay
hook的函数onBeforePageDisplay
回调:
//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>'
但现在
对于MediaWiki 1.17及更高版本,请使用ResourceLoader模块。
$ out-&gt; addModules(array(/ modules /));
我无法使其发挥作用而且没有找到任何这方面的例子。
也许我必须使用mw.loader.load
模块,但我不知道该怎么做。请帮助我,对不起我的英语。
P.S。 this解决方案的工作,但不对。需要使用ResourseLoader的解决方案。 (c)中IMHO
答案 0 :(得分:6)
解决方案很简单(看起来像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(解析后)。