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


Add tab and open in new window/tab

我搜索了在"页面"answers"讨论"旁边添加标签的可能性,发现如下。链接到代码为

的文章
$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';,但它似乎不能与这些链接一起工作(适用于我目前在我的wiki上的其他外部链接)。

是否有一种方法可以强制标签链接在新窗或标签中打开?

我使用的是:
MediaWiki version: 1.19.1

MySQL: 5.5.16

我不认为这是可能的不修改PHP代码的皮肤你正在使用(例如skins/Vector.php为矢量皮肤)。如果你确实想这样做,渲染导航选项卡的代码是,令人惊讶的是,在renderNavigation()方法。或者您可以修改key字符串(通常用于将titleaccesskey属性注入链接),以便在execute()中设置后为您的选项卡修改。

如果你不喜欢修改你的皮肤,一个更简单的解决方案可能是使用JavaScript。类似于以下代码(用name_of_tab替换为您的自定义选项卡的名称)在您的网站JavaScript应该做到这一点:

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

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

原则上,可以通过用CSS隐藏选项卡来避免最后一个问题,直到JS代码运行。然而,确保标签总是开始隐藏,但只有如果JS启用,没有黑客皮肤,无论MediaWiki是否配置为异步脚本加载,得到…令人惊讶的是棘手的。事实上,我放弃了想要弄明白的想法。也许写一个自定义的ResourceLoader模块可以做到这一点,但我已经在这上面花了太多时间了。