我正在为Mediawiki开发一个扩展程序,该扩展程序基于另一个扩展程序(内部开发),该扩展程序无法在上面使用版本高于1.16.5的Mediawiki安装。我需要在属于特定命名空间的页面中包含javascript,但我无法使用ResourceLoader
http://www.mediawiki.org/wiki/ResourceLoader。
有人知道这样做有什么简单吗?我需要包含JQuery和Datatables,以便自定义呈现属于命名空间的页面。
答案 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 - 是否有理由不想为每个页面执行此操作?无论如何,它们都被缓存了,所以它只是一次性击中。