2016-06-07 19 views
1

Ich baue eine Mediawiki-Site, die ein paar tausend Bot-generierte Artikel enthalten wird. Ich möchte, dass Benutzer in der Lage sind, die unteren Abschnitte jedes Artikels zu bearbeiten, aber nicht die von den Bots generierten Abschnitte.Wie schütze ich nur einen Teil eines Mediawiki-Artikels vor der Bearbeitung?

Ich fand eine verlassene Erweiterung namens ProtectSection, die dies getan hat, aber ich habe nicht die Fähigkeiten, es zu aktualisieren, um mit der aktuellen Mediawiki-Version zu arbeiten.

Ich überlege, die von Bot erzeugten Artikel zu schützen und sie dann in vom Benutzer editierbare Artikel zu übertragen. Wenn ich das tue, kann ich die originalen Bot-generierten Artikel vor Suchmaschinen verstecken und innerhalb des Wikis navigierbar sein?

Außerdem möchte ich, dass die Benutzer in der Lage sind, frühere Versionen der vom Bot generierten Artikel zu referenzieren, da ihr Text von Zeit zu Zeit vom Bot aktualisiert wird. Wenn ich die bot-generierten Artikel übergebe und verstecke, gehe ich davon aus, dass ihr Verlauf nicht zugänglich ist. Dies wäre kein Problem, wenn ich die bot-generierten Artikel mit von Benutzern bearbeitbaren Abschnitten in ihnen verfügbar halten könnte.

Antwort

1

Ich bekam eine schlechte Nachricht. Es ist wirklich schwierig, einen Teil des Artikels zu schützen. Aktuelle Mediawiki-Architektur erlaubt es nicht von Grund auf neu.

Was ich vorschlagen Sie zu tun, ist custom namespase erstellen und alle Bot-Artikel dort platzieren.

// 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 normale Benutzer diese benutzerdefinierten Namespace bearbeiten, here is some info. Aber erlauben Sie Benutzern, Geschichte dieser Seiten zu sehen.

# 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'); 

Letzter Schritt kennen Sie bereits - Tranclution verwenden.