添加选项卡并在新窗口/选项卡中打开

时间:2013-04-09 07:32:07

标签: php tabs customization mediawiki

我搜索了在页面和讨论旁边添加标签的可能性,并在下面找到。 Link to the post with the below code

$wgHooks['SkinTemplateNavigation'][] = 'replaceTabs';
function replaceTabs( $skin, &$links) {  
    $links['namespaces']['name_of_tab'] = array(
            'class' => false or 'selected', // if the tab should be highlighted
            'text' => 'text_of_tab', // what the tab says
            'href' => 'url_to_point_to', // where it links to
            'context' => 'main',
    );
    return true;
}

效果很好,但窗户在同一个窗口打开。 我添加了$wgExternalLinkTarget = '_blank';但似乎没有使用这些链接(适用于我目前在我的维基上的其他外部链接)。

有没有办法强制标签链接在新窗口或标签中打开?

我正在使用:
MediaWiki版本:1.19.1
PHP:5.3.6(apache2handler)
MySQL:5.5.16

1 个答案:

答案 0 :(得分:0)

如果不修改您正在使用的皮肤的PHP代码,我认为这是不可能的(例如,对于Vector皮肤,例如skins/Vector.php)。如果你想这样做,那么在renderNavigation()方法中,用于渲染导航标签的代码就足够了。或者您可以在key中设置选项卡之后修改title字符串(通常用于将accesskeyexecute()属性注入链接)。

如果您不喜欢黑客入侵的想法,更简单的解决方案可能是使用JavaScript。您site JavaScript中的以下代码(name_of_tab替换为自定义标签的名称)应该这样做:

jQuery( function ( $ ) {
    // run this code after page has loaded:
    $( '#ca-name_of_tab a' ).attr( 'target', '_blank' );
} );

当然,对于禁用JavaScript的用户,这不起作用。还有一个小窗口,有人可能在加载之后但在JavaScript有机会运行之前点击链接。

原则上,可以通过使用CSS隐藏选项卡来避免上一个问题,直到JS代码运行。但是,确保选项卡始终最初是隐藏的,但如果启用了JS,没有黑客攻击皮肤,无论是否MediaWiki被配置为执行异步脚本加载,得到......令人惊讶的棘手。事实上,我放弃了试图解决它。也许编写一个自定义ResourceLoader模块可能会这样做,但我已经花了太多时间在这上面。