Movatterモバイル変換


[0]ホーム

URL:


Jump to content
MediaWiki
Search

Handbuch:Verwendung von benutzerdefinierten Namensräumen

From mediawiki.org
This page is atranslated version of the pageManual:Using custom namespaces and the translation is 75% complete.
Outdated translations are marked like this.
Languages:

Zusätzlich zu den eingebautenNamensräumen ist es möglich, benutzerdefinierte Namensräume zu einer MediaWiki-Installation hinzuzufügen, um Inhalte weiter zu trennen und eine logischere Organisation zu ermöglichen.

Benutzerdefinierte Namensräume sind mit der Konfigurationsrichtlinie$wgExtraNamespaces einfach zu verwalten.Es ist auch möglich, Aliasnamen für benutzerdefinierte (und auch vordefinierte) Namensräume zu definieren, indem man die Konfigurationsdirektive$wgNamespaceAliases verwendet.Eingige Erweiterungen machen es Dir leicht benutzerspezifischen Namensräume zu erstellenBeispiele enthaltenNamespaceManager undBlueSpiceNamespaceManager.

Es wird empfohlen, vor der Bearbeitung von Namensräumen sicherzustellen, dass keine Aufträge in derjob queue anstehen, um zu vermeiden, dass solche Aufträge fehlschlagen, wenn sie auf Seiten von Namensräumen abzielen, die Sie gerade löschen oder umbenennen wollen. Verwenden SierunJobs.php, um alle anstehenden Aufträge auszuführen und die Warteschlange zu leeren, bevor Sie die Namensraum-Konfiguration ändern.

Einen benutzerdefinierten Namensraum erstellen

Sie registrieren zusätzliche Namensräume, indem Sie sie der globalen Variable$wgExtraNamespaces in Ihrer Datei"LocalSettings.php" hinzufügen.Alle Namensräume benötigen einen eindeutigen numerischen Index in diesem Array.Als ein Beispiel einer einfachen Erstellung eines benutzerspezifischen Namensraums, füge folgende Zeilen in die"LocalSettings.php" Datei, die "Foo" als Namensraum 3000 definiert und den zugehörigen Namensraum "Foo_talk".Beachte bitte, dass ein Talk-Namensraum, der mit deinem benutzerdefinierten Namensraum verbunden ist, derzeit eine "feste" Anforderung ist.

// Definiert Konstanten für einen zusätzlichen Namensraum.define("NS_FOO",3000);// Diese Zahl MUSS gerade sein.define("NS_FOO_TALK",3001);// Dies MUSS die darauffolgende Ganzzahl sein.// Füge Namensräume hinzu.$wgExtraNamespaces[NS_FOO]="Foo";$wgExtraNamespaces[NS_FOO_TALK]="Foo_talk";// Beachte die Unterstriche in den Namen der Namensräume.
Wähle eine unbenutzte Nummer
Als Grundsatz gilt, dass die Zahlen der Namensräume 100-199 für seitenspezifische namensräume reserviert sind, obwohleinige Erweiterungen diesem Grundsatz nicht entsprechen. Ersteller von Erweiterungen nutzen höhere Zahlen bis 32767. Wenn Du einen Index wählst, solltest Du jede Zahl vermeiden, die inextension default namespaces genannt wird, da Du die Erweiterung eventuell später installieren möchtest. DieZahlen von 3000 bis 4999 sind den System-Administratoren vorbehalten, um benutzerspezifischen Namensräume zu erstellen. (Ebenfalls solltest Du jeden Namensraum mitname vermeiden der bereits inExtension default namespaces (Festgelegte Namensräume von Erweiterungen) ist.)
Gerade vor Ungerade
Beachte der oben genannte Zahlenbereich 3000 für den Namensraum ist ein Beispiel.
Erstelle den Diskussions-Namensraum ebenfalls.
Normalerweise erstellt Du einen Diskussions "Talk" Namensraum zusammen mit einem benutzerspezifischen Namensraum. Mit diesem Beispiel, wenn Dueine Seite verschiebst in den Namensraum "Foo", wird angezeigt auch die verbundene Diskussions-Seite mit zu verschieben (wenn es eine gibt) und wenn Du dich dafür entscheidest, wird MediaWiki diese Diskussions-Seite in "Foo talk" setzen.
Keine Leerzeichen
Verwende Unterstriche anstatt von Leerzeichen für Benennungen von Namensräumen. 'My Namespace' ist hier unzulässig; verwende stattdessen 'My_Namespace'.
Keine Bindestriche

Der großgeschriebene Teil erlaubt keine Bindestriche, aber sie können sicher zu den Prefix-Titeln ergänzt werden.Beispiel:

$wgExtraNamespaces[NS_FOOFOO]="Foo-Foo";
Gib den gewählten Nummern einen Namen
Das Beispiel definiertKonstanten für die Namensraum IDs, sodass Du später auf die Namensräume Deiner Konfiguration verweisen kannst, wie z.B. in$wgNamespaceProtection,$wgNamespacesWithSubpages oder$wgExtraGenderNamespaces

Weiter kannst Du zusätzliche Einstellungen für Deinen neuen Namensraum konfigurieren.

$wgNamespaceProtection[NS_FOO]=['editfoo'];// Berechtigung "editfoo" um den Namensraum foo zu bearbeiten$wgNamespacesWithSubpages[NS_FOO]=true;// Unterseiten für den Namensbereich foo erlauben$wgGroupPermissions['sysop']['editfoo']=true;// Berechtigung "editfoo" für die Benutzer der Gruppe "sysop" erteilen
Tue es frühzeitig
Veränderungen an$wgExtraNamespaces müssen durchgeführt sein während der MediaWiki Initialisierung, z.B. für den Fall, dass eine Erweiterung usw. mit dieser neu erstellen benutzerspezifischem Namensraum funktionieren soll. Stelle sicher, dass du diese zuvor definiert und benannt hast, bevor du die entsprechende Erweiterung aufrufst. Beispielsweise kann dies nicht in einem post-initialisierten Hook wie$wgExtensionFunctions verändert werden.
Achten Sie auf Kollisionen mit URL-Protokollen
Der Verlinkungscode von MediaWiki kennt eine Reihe von URL-Protokollen, die in der Variable$wgUrlProtocols definiert sind. Wenn Deine Namensraumbenennung identisch zu einem aus dem Protokoll ist, wirst Du Störungen im [[wikilinks]] auf den Seiten Deinen benutzerspezifischen Seiteen erzeugen. Dies tritt üblicherweise auf, falls jemand versucht den Namensraum "News" zu erstellen, dennnews: ist ein URL-Protokoll für NNTP-Newsgroups.
Um dies zu vermeiden, setzt man das entsprechende URL-Protokoll außer Kraft, in dem man folgenden Code in die "LocalSettings.php"-Datei einfügt (man ersetztnews durch den kleingeschriebenen Namen des Protokolls, das man entfernen möchte):
$wgUrlProtocols=array_diff($wgUrlProtocols,array('news:'));

In Erweiterungen

MediaWiki Version:
1.25
Gerrit change 166705

Erweiterungen fügen oft ihre eigenen Namensräume hinzu, wie z.B. der "Topic"-Namensraum derFlow-Erweiterung.Das Registrierungssystemextension.json verfügt über einen Schlüsselnamespaces, mit dem eine Erweiterung ihre Namensräume auflisten kann, die immer existieren sollten.Aus derGadgets-Erweiterung:

"namespaces":[{"id":2300,"constant":"NS_GADGET","name":"Gadget","protection":"gadgets-edit"},{"id":2301,"constant":"NS_GADGET_TALK","name":"Gadget_talk"},]

You can also set other namespace-related settings here, such as whether it should be a content namespace or not; seeHandbuch:extenstion.json/Schema for the available properties.

If namespace registration is conditional (for exampleEventLogging only defines its "Schema" namespace on the wiki where it stores schemas), the extension should add"conditional": true to the namespace definition inextension.json, and also register a handler for theCanonicalNamespaces hook there which decides whether to register the namespace or not.The hook handler should only change the$namespaces with which it is called; all other settings of the namespace should still be registered in theextension.json.If those settings should also be dynamic, do not change$wgContentNamespaces,$wgNamespaceContentModels etc. in the CanonicalNamespaces hook handler (it will have no effect –T288819); instead, you will have to set them earlier, such as in acallback (not in$wgExtensionFunctions).

Beachten Sie, dass das Hinzufügen einer Erweiterung zu LocalSettings.php nicht unbedingt dazu führt, dass relevante Namensraumkonstanten als globale Variablen für andere Erweiterungen verfügbar sind.

Inhaltsnamensräume

Wenn die Seite für die Website-Statistiken (sieheSpecial:Statistics) erstellt wird, verwendet MediaWiki Werte, die in der Datenbank gespeichert sind, um bestimmte Gesamtzahlen zu berechnen.Eine bestimmte Gesamtzahl ist die Anzahl der Artikel oder die Anzahl der Inhaltsseiten.

Damit eine Seite als Artikel oder richtiger Inhalt betrachtet wird, muss sie:

Wenn Sie benutzerdefinierte Namensräume erstellen, um zusätzliche Inhalte aufzunehmen, sollten sie in der Konfiguration angegeben werden.Das macht man über die Konfigurationsrichtlinie$wgContentNamespaces.

Um das obige Beispiel zu ergänzen, könnte man der Datei "LocalSettings.php" folgendes hinzufügen:

$wgContentNamespaces[]=3000;
oder
$wgContentNamespaces[]=NS_FOO;

MediaWiki betrachtet nun Seiten im „Foo“-Namensraum als Artikel, wenn sie die übrigen Kriterien erfüllen, und berücksichtigt sie bei der Aktualisierung der Site-Statistiken.

Wartungsskripte ausführen

  • Wenn der Wert des Konfigurationsparameters$wgContentNamespaces angepasst wird, ist es ratsam, entweder das Skript "path/to/maintenance/updateArticleCount.php oder "path/to/maintenance/initSiteStats.php" auszuführen, um den internen Statistik-Cache zu aktualisieren (sieheHandbuch:Wartungsskripte).

Warum braucht man einen benutzerdefinierten Namensraum

Es gibt mehrere Gründe, weshalb ein solches Vorgehen sinnvoll sein könnte:

  • * Ein benutzerdefinierter Namensraum kann verwendet werden, um Inhalte zu speichern, die nicht auf der Suchergebnisseite angezeigt werden sollen, z. B. Seiten, die nur für dieTransklusion verwendet werden.
  • * Bestimmte Namensräume erfordern zusätzliche Berechtigungen für das Bearbeiten.
  • * Bestimmte Namensräume sollen nicht gewissen Einschränkungen oder Standardeinstellungen unterworfen werden (z.B.$wgNoFollowNsExceptions)
  • * Ein einheitliches Präfix für bestimmte Inhalte, das nur für diesen Namensraum durchsucht werden kann
  • * Wenn Sie ein MW-Entwickler sind, benötigen Sie manchmal einen eigenenNamensraum für Ihre Erweiterung(en)

Arbeiten mit bestehenden Seiten

Beim Speichern von Seitendatensätzen verwendet MediaWiki den numerischen Index eines Namensraums zusammen mit dem restlichen Titeltext.Wenn also eine Seite in einem Namensraum erstellt wird, der nicht existiert, z. B. „Bar:Beliebige Seite“, wird sie als im Hauptnamensraum liegend behandelt.

Dies kann zu Problemen führen, wenn zu einem späteren Zeitpunkt eine benutzerdefinierte Namensraum-Definition für „Bar“ hinzugefügt wird, da MediaWiki nach einer Seite sucht, die über den richtigen Namensraum indiziert ist, diese aber nicht finden kann, wodurch der Inhalt unzugänglich wird.

You can use theNamespaceDupes maintenance script to correct this problem.It will find pages in the main namespace with a prefix matching any of the defined namespaces, and update their records.

If you are not able to run maintenance scripts, then the following approach might be suitable:

  1. # Die Namensraum-Definition in der Konfigurationsdatei auskommentieren
  2. # Jede betroffene Seite aufrufen und aus dem Pseudo-Namensraum verschieben, z. B. „Bar:Beliebige Seite“ nach „Bar2:Beliebige Seite“ verschieben
  3. # Aufhebung der Kommentierung der Namensraum-Definition
  4. # Verschieben der betroffenen Seiten in den neuen Namensraum

Entfernen benutzerdefinierter Namensräume

Das oben angesprochene Problem tritt auch auf, wenn eine benutzerdefinierte Namensraum-Definition entfernt wird; MediaWiki kennt den numerischen Index für den Namensraum nicht mehr und versucht, den Hauptnamensraum nach den gewünschten Seiten zu durchsuchen, was zu unzugänglichen Inhalten führt.Das kommt zwar selten vor, da die meisten Websites keine Namensräumeentfernen müssen, aber es ist ein Problem.

MediaWiki Version:
1.43
Gerrit change 1052196

You can use theCleanupTitles maintenance script to correct this problem.It will find pages any namespace that is no longer defined, and update their records.The pages will be moved to the main namespace with an added prefix likeNS123:, unless specified otherwise by parameters to the script.

As above, you can also temporarily restore the namespace configuration and move the pages from the user interface (or delete them).

Umbenennen benutzerdefinierter Namensräume

Angenommen, man möchte den benutzerdefinierten Namensraum „Foo“ in „New“ umbenennen, ohne eine Massenverschiebung von Seiten durchzuführen.Der einfachste Weg, besteht darin, die Namensraum-ID (hier "3000") sowie die Namensraumkonstante (hier "NS_FOO") beizubehalten, den (sichtbaren) Namensraumtitel zu ändern und den alten als Alias hinzuzufügen.

ändere

define("NS_FOO",3000);$wgExtraNamespaces[NS_FOO]="Foo";

zu

define("NS_FOO",3000);$wgExtraNamespaces[NS_FOO]="New";$wgNamespaceAliases['Foo']=NS_FOO;

Note that some extensions store namespace names in plain text instead of their internal IDs, and should therefore be dealt with extra care.Examples include:

Namensraumkonflikte vermeiden

Um Namensraum-Konflikte zu vermeiden, z.B. wenn der eigene Namensraum die gleiche Nummer hat wie ein Namensraum, der durch eineErweiterung definiert ist, zeigt die ListeErweiterungs-Namensraum, welche Nummern zu vermeiden sind, um Kollisionen zu vermeiden.

Die Definition von$wgNamespacesToBeSearchedDefault,$wgNamespacesWithSubpages, $wgContentNamespaces oder$wgNamespaceAliases für eine ID, die mit keinem existierenden Namensraum in $wgExtraNamespaces verknüpft ist, macht das Wiki nicht kaputt; MediaWiki ignoriert solche Konfigurationen gnädig.

Namensräume gestalten

Um beispielsweise die Hintergrundfarbe von Seiten in einem bestimmten Namespace (und dem dazugehörigen Talk-Namespace) festzulegen, kann folgender Code zucommon.css hinzugefügt werden:

.ns-3000#content,.ns-3001#content{background-color:#f3f3ff;}.ns-3000div.thumb,.ns-3001div.thumb{border-color:#f3f3ff;}

wobei3000 der Index des Namespaces und#f3f3ff  die gewünschte Hintergrundfarbe ist.However, unless your needs are very basic you will probably want to support night mode as it is expected by modern standards, and avoid accessibility problems derived from using fixed colors.SeeEmpfehlungen für Dunkelmodus-Kompatibilität auf Wikimedia-Wikis for details.

Möglicherweise möchte man auch den Namen des Reiters gegenüber dem Standardnamen (dem Namen des Namensraums) ändern.Dieser befindet sich in Ihren Systemmeldungen unter MediaWiki:nstab-namespace.


Siehe auch

Site-Administration

Erweiterungen

Für Entwickler von Erweiterungen

  • Extension namespace registration – Liste der benutzerdefinierten Namensräume, die von Erweiterungen registriert wurden. Wenn eine Konstante für einen benutzerdefinierten Namensraum definiert wird, ist sie hier ebenfalls einzutragen.
Retrieved from "https://www.mediawiki.org/w/index.php?title=Manual:Using_custom_namespaces/de&oldid=7940240"
Categories:

[8]ページ先頭

©2009-2025 Movatter.jp