如何将所有MediaWiki红色链接重定向到单个URL

时间:2015-03-25 19:08:24

标签: mediawiki

我想将所有指向不存在的Wiki页面的链接重定向到MediaWiki实例之外的另一个网址。我想避免为此写自己的扩展;也就是说,应该有一种方法可以通过简单的配置来实现,但文档并没有真正说明。

3 个答案:

答案 0 :(得分:3)

我不知道配置选项,但您可以使用LinkEnd hook并检查“已损坏”选项:

$wgHooks['LinkEnd'][] = function( $dummy, Title $target, array $options, &$html, array &$attribs, &$ret )
{
    if( in_array( 'broken', $options ) ) $attribs['href'] = 'http://yourlinkhere';
    return true;
};

这可以直接放在LocalSettings.php中,而无需编辑任何其他文件。

答案 1 :(得分:0)

我不认为MediaWiki可以开箱即用,但你当然可以加入一些javascript来截取点击红色链接:

$('a.new').click(function(e) {
    e.preventDefault();
    window.location.href = 'http://www.example.com';
});

默认情况下MediaWiki附带jQuery,因此无需进一步更改即可使用。

答案 2 :(得分:0)

这是一个老问题,但我能够通过以下方式完成(MediaWiki 1.28):

$wgMultiBoilerplateOptions[ "New page template" ] = "Template:Preload";

  • LocalSettings.php 中,添加以下代码以检查链接是否属于新页面,并将querystring参数添加到上述模板的默认值:

# if a link is to create a new page, add querystring parameter to pre-populate with template $wgHooks["HtmlPageLinkRendererBegin"][] = function( $dummy, $target, &$html, &$customAttribs, &$query, &$options, &$ret ) { # if the target does not exist $exists = $target -> exists(); if ( !$exists ) { # add querystring parameter to set template, which will pre-populate empty new page $query["boilerplate"] = "Template:Preload"; } return true; };

改编自https://www.mediawiki.org/wiki/Manual:Hooks/LinkBegin