我搜索了在页面和讨论旁边添加标签的可能性,并在下面找到。 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
答案 0 :(得分:0)
如果不修改您正在使用的皮肤的PHP代码,我认为这是不可能的(例如,对于Vector皮肤,例如skins/Vector.php
)。如果你想这样做,那么在renderNavigation()
方法中,用于渲染导航标签的代码就足够了。或者您可以在key
中设置选项卡之后修改title
字符串(通常用于将accesskey
和execute()
属性注入链接)。
如果您不喜欢黑客入侵的想法,更简单的解决方案可能是使用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模块可能会这样做,但我已经花了太多时间在这上面。