1

我已经搜索了在页面和讨论旁边添加标签的可能性,并在下面找到。 使用以下代码链接到帖子

$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

4

1 回答 1

0

如果不修改您正在使用的皮肤的 PHP 代码(例如skins/Vector.phpVector 皮肤),我认为这是不可能的。如果您确实想这样做,那么令人惊讶的是,呈现导航选项卡的代码在该renderNavigation()方法中。或者,您可以在key将选项卡设置为.titleaccesskeyexecute()

如果你不喜欢破解你的皮肤的想法,一个更简单的解决方案可能是使用 JavaScript。您的站点 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 模块可能会做到这一点,但我已经在这方面花费了太多时间。

于 2013-04-30T18:01:01.767 回答