如何仅保护Mediawiki文章的一部分不被编辑?

时间:2016-06-07 14:28:56

标签: mediawiki wiki mediawiki-extensions

我正在构建一个Mediawiki网站,其中包含几千个Bot生成的文章。我希望用户能够编辑每篇文章的下半部分,但不能编辑机器人生成的部分。

我找到了一个名为ProtectSection的废弃扩展程序,但是我没有能力更新它以使用当前的Mediawiki版本。

我正在考虑对Bot生成的文章进行保护,然后将其转换为用户可编辑的文章。如果我这样做,我可以隐藏来自搜索引擎的原始Bot生成的文章,以及可以在维基中导航吗?

此外,我希望用户能够参考机器人生成的文章的先前版本,因为他们的文本将由机器人不时更新。如果我转换并隐藏机器人生成的文章,我假设他们的历史将无法访问。如果我可以保留机器人生成的文章,并且其中包含用户可编辑的部分,那么这不会成为问题。

1 个答案:

答案 0 :(得分:1)

我得到了一个坏消息。使文章的一部分受到保护真的很难。目前的mediawiki架构不允许从头开始。

我建议你做的是创建custom namespase并将所有机器人的文章放在那里。

// Define constants for my additional namespaces.
define("NS_FOO", 3000); // This MUST be even.
define("NS_FOO_TALK", 3001); // This MUST be the following odd integer.

// Add namespaces.
$wgExtraNamespaces[NS_FOO] = "Foo";
$wgExtraNamespaces[NS_FOO_TALK] = "Foo_talk"; // Note underscores in the namespace name.

阻止普通用户编辑此自定义命名空间here is some info。但允许用户观看此页面的历史记录。

# Only allow autoconfirmed users to edit Project namespace
$wgNamespaceProtection[NS_PROJECT] = array( 'autoconfirmed' );

# Don't allow anyone to edit non-talk pages until they've confirmed their
# e-mail address (assuming we have no custom namespaces and allow edits
# from non-emailconfirmed users to start with)
# Note for 1.13: emailconfirmed group and right were removed from default
# setup, if you want to use it, you'll have to re-enable it manually
$wgNamespaceProtection[NS_MAIN]     = $wgNamespaceProtection[NS_USER]  =
$wgNamespaceProtection[NS_PROJECT]  = $wgNamespaceProtection[NS_IMAGE] =
$wgNamespaceProtection[NS_TEMPLATE] = $wgNamespaceProtection[NS_HELP]  =
$wgNamespaceProtection[NS_CATEGORY] = array( 'emailconfirmed' );

# Only allow sysops to edit "Policy" namespace
$wgGroupPermissions['sysop']['editpolicy'] = true;
$wgNamespaceProtection[NS_POLICY] = array( 'editpolicy' );

您已经知道的最后一步 - 使用Tranclution