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

How do I protect only part of a Mediawiki article from editing?

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

我找到了一个名为 ProtectSection 的废弃扩展,它可以执行此操作,但我没有更新它以与当前 Mediawiki 版本一起使用的技能。

我正在考虑保护 Bot 生成的文章,然后将它们转换为用户可编辑的文章。如果我这样做,我是否可以从搜索引擎中隐藏原始的 Bot 生成的文章,并使其无法在 wiki 中导航?

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

我有个坏消息。让文章的一部分受到保护真的很难。当前的 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