2014-09-18 8 views
6

Ich möchte hinzufügen externes Skript Kopf Abschnitt für alle Seiten in MediaWiki.Wie fügt man den externen <script> zu <head> Abschnitt für alle Mediawiki-Seiten hinzu?

Funktion onBeforePageDisplay Rückruf von BeforePageDisplay Haken:

//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 dieser Funktion i

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

zu <head> Abschnitt für alle Seiten in dem Wiki hinzufügen möchten.

Für alte Versionen von Mediawiki verwendet addScript Methode von OutputPage Objekt:

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

aber jetzt

Für MediaWiki 1.17 und höher, verwenden Resourcemodule.

$ out-> addModules (Array (/ Module /));

Ich konnte es nicht funktionieren lassen und finde keine Beispiele dafür.

ResourceLoader description

Default_modules description

Vielleicht habe ich mw.loader.load Modul verwenden, aber ich habe keine Ahnung, wie es zu tun. Hilf mir bitte und entschuldige mein Englisch.

Ps.s. this Lösung funktioniert, ist aber nicht richtig. Brauchen Sie eine Lösung mit gebrauchtem ResourseLoader. (C) IMHO

+0

Es gibt keine Möglichkeit, externe Skripte von ResorseLoader zu laden. Ich habe meine eigene Erweiterung geschrieben, um das zu tun. Bessere Lösung aus meiner Antwort. И у тебя в коде яваскрипт вставлен в пхп. :) – hlcs

Antwort

6

Lösung war einfach (es sieht aus wie 2nd Lösung):

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

Auf diese Weise besser aussehen dann this, weil es direkt mit Outputpage arbeiten (nach Parsing).

+0

Dies führt zu einer schlechten Leistung. Sie sollten [ResourceLoader] (https://www.mediawiki.org/wiki/ResourceLoader/Developing_with_ResourceLoader) verwenden. – Tgr

+0

Hat super funktioniert. Keine spürbaren Auswirkungen auf die Leistung. Vielen Dank! –