mediawiki 1.16.5:为特定命名空间加载javascript

时间:2011-11-22 10:45:12

标签: javascript mediawiki

我正在为Mediawiki开发一个扩展程序,该扩展程序基于另一个扩展程序(内部开发),该扩展程序无法在上面使用版本高于1.16.5的Mediawiki安装。我需要在属于特定命名空间的页面中包含javascript,但我无法使用ResourceLoader http://www.mediawiki.org/wiki/ResourceLoader

有人知道这样做有什么简单吗?我需要包含JQuery和Datatables,以便自定义呈现属于命名空间的页面。

1 个答案:

答案 0 :(得分:2)

至少有三种方法可以解决这个问题。

第一种方法是编辑魔术页MediaWiki:Common.js并添加如下内容:

if(wgNamespaceNumber == 0) { // NS_MAIN
  importScript('MediaWiki:MyScript.js');
}

你可以在块中放置任意的javascript,importScript位用于执行存储在Wiki页面中的JavaScript,但是还有其他方法可以包含JS(参见例如this question })。有关MediaWiki方面的详细信息,请参阅Manual:Interface/JavaScript

第二种方法是破解生成MediaWiki页面的PHP,根据当前命名空间注入<script>标签,但这需要更多一些:你需要构建一个自定义扩展并挂钩它在适当的时候。 ParserAfterTidy钩子看起来合适,请参阅Hooks

第三种方法是简单地编辑皮肤并为wiki中的每个页面加载JS - 是否有理由不想为每个页面执行此操作?无论如何,它们都被缓存了,所以它只是一次性击中。