2013-04-09 151 views
1

我已经搜索了可能性,在页面和讨论旁边添加标签并在下面找到。 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';,但它似乎不适用于这些链接(适用于我目前在我的wiki上的其他外部链接)。

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

我使用:
链接到MediaWiki版本:1.19.1
PHP:5.3.6(apache2handler)
MySQL的:5.5.16

+0

任何人都有一些想法? – 2013-04-10 14:11:17

+0

我发现一个Hook,可能会做我所要求的,但我不知道如何实现它。 **'$ wgHooks [ 'LinkerMakeExternalLink']'**。任何人可能会帮助我? – 2013-04-11 06:16:10

+0

没有人能帮助我? – 2013-04-19 10:30:12

回答

0

我不认为这是可能的,无需修改您正在使用的皮肤的PHP代码(例如用于Vector皮肤)。如果您确实想要这样做,那么在renderNavigation()方法中,用于呈现导航选项卡的代码令人惊讶地足够了。或者,您可以在​​中设置key字符串(通常用于将titleaccesskey属性注入链接)中修改标签。

如果您不喜欢黑客入侵您的皮肤的想法,更简单的解决方案可能是使用JavaScript。如下面的代码的东西(与name_of_tab您的自定义标签的名称所取代)在site JavaScript应该做到这一点:

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

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

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

相关问题