Manual:Using custom namespaces/fr

En plus des espaces de noms prédéfinis, il est possible d'ajouter des espaces de noms personnalisés à une installation de MediaWiki, permettant ainsi de séparer vos contenus et permettre une organisation de ceux-ci plus logique.

Les espaces de noms personnalisés sont faciles à administrer en utilisant la variable de configuration. Il est aussi possible de définir des alias pour les espaces de noms personnalisés (et prédéfinis), en utilisant la variable de configuration.

Création d'un espace de noms personnalisé
Vous pouvez ajouter un espace de noms en éditant la variable globale située dans le fichier. Tous les espaces de noms nécessitent un index numérique unique dans ce tableau. En prenant par exemple la création d'un espace de noms personnalisé, ajouter les lignes suivantes au fichier  définira un espace de noms "Foo" 3000 et son espace de noms de discussion associé "Foo_talk".


 * Choisir un nombre non encore utilisé.
 * Afin de suivre la convention, les espaces de noms numérotés de 100 à 199 sont réservés pour des utilisations spécifiques au wiki, bien qu'il existe des extensions qui ne respectent pas cette règle. Les développeurs d'extension utilisent des indices plus grands, jusqu'à 32767. Lorsque vous choisissez votre indice, évitez les nombres déjà présents dans les espaces de noms par défaut des extensions afin de pouvoir installer certaines de ces extensions dans le futur. En conséquence, les indices supérieur à 3000 sont un bon choix pour les administrateurs systèmes qui souhaitent définir leurs espaces de noms personnalisés.


 * Pair, puis impair.
 * Noter l'indice supérieur à 3000 dans le tableau des espaces de noms ci-dessus.
 * Un indice "pair" dénote un sujet d'espace de nom.
 * L'indice "impair" qui suit immédiatement ce premier nombre dénote l'espace de nom de discussion ("talk") associé.


 * Créer aussi l'espace de noms de discussion.
 * Vous créez automatiquement un espace de noms de "discussion" (talk) en parallèle avec chaque espace de noms d'utilisateur. Avec cet exemple, si vous renommez une page dans l'espace de noms "Foo", il vous sera demandé de renommer également sa page de discussion associée, s'il existe une, et si vous acceptez de le faire, MediaWiki va placer la page de discussion dans "Foo talk".


 * Aucun espace
 * Utilisez des soulignés ('_') à la place des espaces quand vous enregistrez des noms d'espace de noms. "My Namespace" n'est pas valide ici; remplacez-le par "My_Namespace".

La partie en majuscules n'autorise pas les tirets mais ils peuvent encore être ajoutés sans problème dans le libellé du préfixe. Exemple:
 * Pas de tirets


 * Nommez les numéros que vous choisissez
 * L'exemple définit des constantes pour les IDs des espaces de noms, pour pouvoir vous référer plus tard à ces espaces de noms, dans la configuration, par exemple dans, dans , ou dans.

Vous pourriez continuer en configurant des paramètres supplémentaires pour votre nouvel espace de noms.


 * Faites le plus tôt
 * La manipulation de  doit être terminée durant l'initialisation de MediaWiki; par exemple il ne peut pas être manipulé après l'initialisation, à un point d'ancrage comme.


 * Vérifiez qu'il n'y a pas de collisions avec les protocoles des URL
 * Le code qui crée les liens de MediaWiki connait un certain nombre de protocoles d'URL définis dans la variable . Si le nom de votre espace de noms est le même que celui de l'un de ces protocoles, vous aurez des problèmes lors de la création des wikilinks vers les pages de votre espace de noms personnalisé. Ceci arrive fréquemment quand quelqu'un essaie de créer un espace de noms d'actualités ("News"), parce que  est un protocole d'URL pour les groupes d'actualités (newsgroup) NNTP.
 * Pour éviter ce problème, vous pouvez supprimer le protocole d'URL concerné de la configuration en ajoutant le code suivant au LocalSettings.php (en remplaçant  par le nom en minuscules du protocole que vous voulez enlever):

Dans les extensions
Les extensions ajoutent souvent leurs propres espaces de noms, comme l'espace de noms "Topic" des extensions de. An extension can unconditionally add to  as described above, or if its namespace registration is conditional (for example  only defines its "Schema" namespace on the wiki where it stores schemas), then it can add a handler function for the  hook that decides what to do.

Le temps d'enregistrement d'une extension est subtile. Functions that extensions register with are executed too late to register additional namespaces. So extensions should bind the hook at file scope (in ) and check there whether the wiki should activate the extra namespace or not. Extensions can configure namespace permissions and content handlers unconditionally at file scope since they do not require the namespace to actually be created.

The new  registration system has a   key for an extension to list its namespaces that should always exist. From the extension:

It also supports the  hook.

Les espaces de noms des contenus
When building the site statistics page (see Special:Statistics), MediaWiki uses values stored in the database to calculate certain totals. One particular total is the "number of articles" or "number of content pages" figure.

For a page to be considered an article, or proper content, it must:


 * Be in the main namespace, or a defined content namespace
 * Ne pas être une page de redirection
 * Contenir au moins un lien interne

When creating custom namespaces to hold additional content, it is a good idea to indicate this in the configuration. This is done via the configuration directive.

To extend the example above, one might add the following to :


 * or

MediaWiki will now consider pages in the "Foo" namespace to be articles, if they meet the remaining criteria, and will include them when updating the site statistics counters.

Running maintenance scripts

 * When adjusting the value of, it is a good idea to run either the   or   script to update the internal statistics cache (see ).

Why you would want a custom namespace
There are several reasons on why you would want this:


 * A custom namespace can be used to hold content that should not be shown on the search results page, for example pages that are used only for transclusion.
 * Certain namespaces require additional privilege(s) for editing.
 * You want certain namespaces not to be subjected to certain limitations or default settings ( for example)
 * A uniform prefix for specific content(s), which is searchable for that namespace only
 * If you're a MW developer, sometimes you need to have a custom namespace for your extension(s)

Traiement des pages existantes
When storing page records, MediaWiki uses a namespace's numerical index, along with the remaining title text. Thus, when a page is created in a namespace that doesn't exist, e.g. "Bar:Some page", it is treated as being in the main namespace.

This can cause problems if adding a custom namespace definition for "Bar" at a later date, as MediaWiki will look for a page indexed via the proper namespace, but won't be able to find it, thus making the content inaccessible.

To correct this problem, there are three main approaches.

Move conflicting pages
If the number of pages affected is small (e.g. "Bar" held five pages created before the namespace was defined in the site configuration), then the following approach might be suitable:


 * 1) Comment out the namespace definition in the configuration file
 * 2) Access each affected page, and move it out of the pseudo-namespace, e.g. move "Bar:Some page" to "Bar2:Some page"
 * 3) Un-comment the namespace definition
 * 4) Move the affected pages back into the new namespace

Use a maintenance script
Within the maintenance directory, there is a maintenance script which performs the above operation more effectively for a large number of pages;  It is simple to use, but as with all MediaWiki maintenance scripts, consult the available usage information first (use  as an option).

Use a database query
To move all pages "Bar:Some page" into namespace 3000, make the following database query:

To handle discussion pages:

The above example is wrong. It should look for "Bar_Talk:" or "Bar_talk:" or how MediaWiki saves that inside the page_title field... After such fiddling, run the script and the  script to update internal links and search results in your wiki. Note that external search engines like Google will take some time to update their index.

Removing custom namespaces
The problem addressed above also occurs when a custom namespace definition is removed; MediaWiki is no longer aware of the numerical index for the namespace, and attempts to search the main namespace for the desired pages, leading to inaccessible content. This is a rare occurrence, since most sites will not need namespaces removed, but it is a problem. (See mailing list discussion).

Example on how to remove and the Topic namespace:


 * Uninstall Flow
 * Temporarily add $wgExtraNamespaces[2600] = 'Topic'; to the config
 * Use deleteBatch.php to delete all pages in the Topic namespace
 * Remove the $wgExtraNamespaces config

Renaming custom namespaces
Suppose that you need to rename custom namespace "Foo" to "New" without performing a mass move of pages. The easiest way to achieve this is to preserve the namespace ID (here " ") as well as the namespace constant (here " "), modify the (visible) namespace title and add the old one as an alias.


 * change


 * to

Avoid namespace conflicts
In order for you to avoid namespace conflicts e.g. your namespace has the same number as a namespace defined by an extension, the extension namespace list shows you which numbers to avoid to prevent conflicts.

Defining $wgNamespacesToBeSearchedDefault, $wgNamespacesWithSubpages, $wgContentNamespaces or $wgNamespaceAliases for an ID not associated to any existing namespace in $wgExtraNamespaces doesn't break the wiki; MediaWiki gracefully ignores such configurations.

Styling namespaces
For example, to set the background color of pages in a particular namespace (and its associated talk namespace) you can add the following code to your common.css:

where  is the namespace's index and   is the color you want as its background color.