我搜索了在"页面"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
字符串(通常用于将title
和accesskey
属性注入链接),以便在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模块可以做到这一点,但我已经在这上面花了太多时间了。