2016-06-07 63 views
1

我正在構建一個Mediawiki網站,其中將包含幾千個Bot生成的文章。我希望用戶能夠編輯每篇文章的較低部分,但不能編輯bot生成的部分。如何保護部分Mediawiki文章不被編輯?

我發現了一個名爲ProtectSection的廢棄擴展,但是我沒有這方面的技能來更新它以使用當前的Mediawiki版本。

我在考慮讓Bot生成的文章受到保護,然後將它們轉化爲用戶可編輯的文章。如果我這樣做,我可以隱藏搜索引擎中的原始Bot生成的文章,並可以在wiki中導航嗎?

此外,我希望用戶能夠參考殭屍生成的文章的先前版本,因爲他們的文本將不時由機器人更新。如果我跨越並隱藏bot生成的文章,我假設他們的歷史將無法訪問。如果我可以保留bot生成的文章,並且在其中包含用戶可編輯的部分,這將不會成爲問題。

回答

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. 

Resrict普通用戶編輯這個自定義空間,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