Mediawiki页面让用户留下匿名评论?

时间:2013-07-22 15:17:19

标签: mediawiki

看起来真的很简单......但如果我能找到一个可以做到这一点的扩展,我会被诅咒!!

我正在使用Mediawiki 1.18而且我真的想要一个链接来自主页的页面,该主页在我的维基上作为任何人的空白页面,能够匿名发布他们的想法而不会在他们的帖子上显示他们的名字!我只想在我的wiki的一个页面上使用此功能。总而言之,我只想设置一个启用了匿名发布的页面。

有什么想法吗? (没有双关语!)

1 个答案:

答案 0 :(得分:0)

应该可以编写一个PageContentSave挂钩,通过更改通过引用传入的$user参数,将特定页面的所有编辑归属于不存在的用户,类似这样:

function anonymizeSandboxEdits( &$wikiPage, &$user, &$content, &$summary,
                                $isMinor, $isWatch, $section ) {
    $title = $wikiPage->getTitle();
    if ( $title->getNamespace() == NS_PROJECT && $title->getText() == 'Sandbox' ) {
        $user = User::newFromName( 'Anonymous' );
    }
    return true;  // keep running other hooks
}

$wgHooks['PageContentSave'][] = 'anonymizeSandboxEdits';
$wgReservedUsernames[] = 'Anonymous';

将此代码添加到LocalSettings.php应该会导致对“Project:Sandbox”页面(其中“Project:”是您的项目名称空间名称)的所有编辑归因于不存在的用户“匿名”。

请注意,最近在MediaWiki 1.21中引入了PageContentSave挂钩。较旧的MediaWiki版本具有一个名为ArticleSave的大多数等效钩子,它基本上采用相同的参数并且基本上做同样的事情。如果您仍在使用较旧版本的MediaWiki,只需将上面的'PageContentSave'替换为'ArticleSave'即可。您应该没问题。

ArticleSave挂钩已在MW 1.21中弃用,但仍保留以实现向后兼容性,因此即使在升级时它也应继续工作。但是,我应该注意到,在未来的MediaWiki版本中,不能保证其他东西不会破坏这个技巧:在替换钩子中的$user对象似乎可以很好地重新分配编辑,特定用例并未真正记录为明确支持。可能存在未来对MediaWiki代码的更改可能会或多或少地破坏它。


聚苯乙烯。我在我自己的wiki上尝试了这个(仍然运行MW 1.20,所以使用ArticleSave版本),它似乎工作正常。一个有点好奇的副作用是,如果您尝试使用~~~~对页面进行签名,它将在预览中显示您的真实用户名,但在您实际保存页面时将使用“匿名”替换它。有可能解决这个问题,但它还需要(也)使用其他实际上在预览时运行的钩子。