如何将自定义 javascript 文件(比如说custom.js
)添加到 mediawiki 安装中?
例如,如果我放在custom.js
文件夹下resources/lib/
,我如何让它在每个页面上加载?
我不想将其作为扩展的一部分,我更愿意将我的更改保留在LocalSettings.php
.
如何将自定义 javascript 文件(比如说custom.js
)添加到 mediawiki 安装中?
例如,如果我放在custom.js
文件夹下resources/lib/
,我如何让它在每个页面上加载?
我不想将其作为扩展的一部分,我更愿意将我的更改保留在LocalSettings.php
.
正如 garryp 已经建议的那样,您可以将 JavaScript 代码放入MediaWiki:Common.js。请注意,这不是一个文件,而只是一个您可以(作为管理员)在您的 wiki 上编辑的页面。例如,这是英语 Wikipedia 上的 MediaWiki:Common.js 页面。
仅当启用$wgUseSiteJs时才会加载来自 Common.js 的 JavaScript 代码。但是,这是默认设置,所以它应该可以工作,除非您通过$wgUseSiteJs = false;
在 LocalSettings.php 文件中添加一行来故意禁用它。
也可以使用ResourceLoader从文件中加载 JavaScript 代码,但这有点复杂。不过,作为一个简单的示例,如果您在主 MediaWiki 目录中有名为foo/bar.js
andfoo/baz.js
的文件,您可以通过将以下代码添加到 LocalSettings.php 文件中来加载它们:
// register a ResourceLoader module...
$wgResourceModules['custom.foo.whatever'] = array(
'scripts' => array( 'foo/bar.js', 'foo/baz.js' ),
// could e.g. add dependencies on core modules here
);
// ...and set up a hook to add it to every page
function addMyCustomScripts( &$out ) {
$out->addModules( 'custom.foo.whatever' );
return true;
}
$wgHooks['BeforePageDisplay'][] = 'addMyCustomScripts';
基本上,这种方法对扩展作者非常有用,他们可以根据需要使用它来加载 CSS 和 JS 代码。有关更多详细信息,请参阅$wgResourceModules和BeforePageDisplay文档,包括其他模块选项(和核心模块)。
使用 common.js 是个好主意。
另一种选择是将其定义为在 LocalSettings.php 中加载:
# Add onBeforePageDisplay function to BeforePageDisplay Hook
$wgHooks['BeforePageDisplay'][] ='onBeforePageDisplay';
function onBeforePageDisplay( OutputPage &$out, Skin &$skin )
{
$script = '<script type="text/javascript" src="https://example.com/javascript.js"></script>';
$out->addHeadItem("itemName", $script);
return true;
};
将代码放入您的 wiki 的“MediaWiki:common.js”页面
http://www.mediawiki.org/wiki/Manual:Interface/JavaScript
另请参阅页面下方的自定义皮肤。
您可以将 javascript 代码放在 wiki 的“MediaWiki:common.js”页面中。
在一个全新的 wiki 上,您将创建此页面。因为它位于“MediaWiki”命名空间中,您可能会遇到权限问题。除非您是管理员用户,否则您无法编辑该页面。转到“Special:ListUsers/sysop”页面查看管理员用户是谁,并确保您以其中之一的身份登录(忘记密码?)。一旦你克服了这些障碍并可以编辑“MediaWiki:common.js”......
您可以在那里放置任何 javascript,它应该为所有用户加载,无论他们的用户组或皮肤选择如何(因此名称为“common”)。更改后,请记住您的浏览器可能正在缓存内容。查看任何 wiki 页面并执行 ctrl+refresh,新的 javascript 应该会启动。
如果您要加载的文件中有 javascript(在您的 wiki 文件中上传,或托管在外部站点上),您可以通过 ResourceLoader 执行此操作。Ilmari Karonen 将如何做到这一点描述为对 LocalSettings.php 的编辑,但另一种方法......
您可以在“MediaWiki:common.js”页面中使用 ResourceLoader。例如编辑页面并添加一行:
mw.loader.load( 'https://some.website.com/some-javascript.js' );
请参阅mediawiki.org ResourceLoader/Modules 文档中的“mw.loader.load”部分。
我们使用了一个 addOnloadHook 事件,该事件旨在从加载它开始,所以我们最终以 jQuery 方式进行:
jQuery.getScript( 'https://some.website.com/some-javascript.js',
function() {
addOnloadHook(function() {
someJavaScript.thingToRunOnLoad();
});
});