如何鼓励在MediaWiki上进行非匿名编辑?

hlo*_*dal 11 wiki mediawiki

问题

在工作中,我们有一个部门维基(运行Mediawiki).不幸的是,有些人在没有登录的情况下编辑,这使得很难找到编辑来询问有关内容的问题.

有两种策略可以改善这一点

  • 鼓励登录编辑
  • 不鼓励匿名编辑.

鼓舞人心的

对于这部分,欢迎任何提示.但当然,奖励行为总是存在风险.

不鼓励

我知道这必须保持低水平,否则它会阻止任何编辑.但有点烦人的东西会很好.

[更新]我知道可以禁止匿名编辑,但这会给任何首次贡献带来很大障碍(特别是对于我们部门以外的人!),所以我不认为这是一个选项.[/更新]

[update2]使用LDAP或Active Directory无法解决问题,因为外部承包商也可以访问和使用wiki.[/ UPDATE2]

[update3]我不再为这家公司工作了.这并不意味着我完全对这个问题失去了兴趣,但从我目前的兴趣点来看,最有价值的部分是"你忘了登录吗?" 以下部分,我将根据问题的这一部分接受答案.[/ UPDATE3]

确认

一个想法是为匿名用户提供额外的确认步骤 - "你真的确定要匿名提交吗?",尽管有这样一个问题,人们会有放弃或拒绝编辑的风险.但是,如果这个问题以更外交的方式重新措辞为"你忘了登录吗?" 我认为这似乎更容易接受.除此之外,还将捕获作者确实忘记登录的情况,但实际上希望将他/她的贡献归功于他/她的用户.最后一点本身就是想要它的充分理由.

这可能吗?

延迟

另一个令人讨厌的想法是在"保存页面"之后添加一个额外的强制延迟,显示类似"如果你已经登录就不必等待x秒".选择正确的x是很困难的,因为如果它很高,它将成为一个障碍,如果它太低可能没有任何区别.但后来我开始思考,从零开始然后在给定时间范围内给定IP地址的每次匿名编辑添加一秒延迟呢?这样就没有开始使用维基的障碍了,当延迟变得越来越重要时,用户已经贡献了很多,所以我认为结果更可能是编辑最终创建用户而不是放弃.这假设IP地址相当静态,

这可能吗?

Geo*_*ker 17

您可以在Mediawiki中关闭匿名编辑,如下所示:

  • 编辑LocalSettings.php并添加以下设置:

    $wgDisableAnonEdit = true;
    
    Run Code Online (Sandbox Code Playgroud)
  • 编辑包含/ SkinTemplate.php,找到$fname-edit并更改代码看起来像这样(即,基本上在wfProfileIn()wfProfileOut()函数之间包装以下代码):

    wfProfileIn( "$fname-edit" );
    global $wgDisableAnonEdit;
    if ( $wgUser->mId || !$wgDisableAnonEdit) {
    // Leave this as is
    }
    wfProfileOut( "$fname-edit" );
Run Code Online (Sandbox Code Playgroud)

接下来,您可能想要禁用部分的[编辑]链接.要执行此操作,请打开includes/Skin.php并搜索editsection.你会看到类似的东西:

if (!$wgUser->getOption( 'editsection' ) ) {
Run Code Online (Sandbox Code Playgroud)

改为:

global $wgDisableAnonEdit;
if (!$wgUser->getOption( 'editsection' ) || !$wgDisableAnonEdit ) {
Run Code Online (Sandbox Code Playgroud)

现在,匿名用户已禁止部分编辑.