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".


 * Pas de caractère 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. Une extension peut délibérément ajouter à  comme décrit ci-dessus, ou si l'enregistrement de son espace de noms est conditionnel (par exemple  définit seulement l'espace de noms de son "schéma" sur le wiki où il enregistre ses schémas), alors elle peut ajouter une fonction gestionnaire (handler) pour le point d'ancrage des  qui décidera de ce qu'il faut faire.

Le temps d'enregistrement d'une extension est subtile. Les fonctions que les extensions enregistrent avec sont exécutées trop tard pour enregistrer les espaces de noms supplémentaires. Ainsi les extensions devraient relier le point d'ancrage de  aux besoins du fichier (dans  ) et vérifier si le wiki doit activer les espaces de noms supplémentaires ou pas. Les extensions peuvent configurer inconditionnellement les droits d'accès sur les espaces de noms et les gestionnaires de contenu en fonction des besoins du fichier parce qu'elles ne nécessitent pas que l'espace de noms soit actuellement créé.

Le nouveau système d'enregistrement  possède une clé de   afin qu'une extension puisse lister ses espaces de noms qui devraient toujours exister. De l'extension :

Il supporte aussi le point d'ancrage.

Les espaces de noms des contenus
Lorsqu'il construit la page des statistiques du site (voir Special:Statistics), MediaWiki utilise les valeurs rangées dans la base de données pour calculer certains totaux. Un total particulier est le "nombre d'articles" ou la figure du "nombre de pages de contenu".

Pour qu'une page soit considérée comme un article, ou un contenu spécifique, elle doit :


 * Figurer dans l'espace de noms principal, ou être dans un espace de noms de contenu défini
 * Ne pas être une page de redirection
 * Contenir au moins un lien interne

Lorsque vous créez des espaces de noms personnalisés pour y ranger du contenu supplémentaire, une bonne idée est d'indiquer cela dans la configuration. Ceci est fait via la directive de configuration.

Pour étendre l'exemple ci-dessus, on pourrait ajouter ce qui suit à :


 * ou bien

MediaWiki va maintenant considérer les pages dans l'espace de noms "Foo" comme des articles, s'ils vérifient les critères restants, et va les inclure quand il mettra à jour les compteurs de statistiques du site.

Exécuter les scripts de maintenance

 * Quand vous ajustez la valeur de, il est bon d'exécuter soit le script   ou bien le script   afin de mettre à jour le cache des statistiques internes (voir ).

Pourquoi vouloir un espace de noms personnalisé ?
Il y a plusieurs raisons à le vouloir :


 * 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.

Pour corriger ce problème, il existe troois approches principales.

Renommer les pages conflictuelles
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) décommentez la définition de l'espace de noms
 * 4) remettre les pages concernées de nouveau dans l'espace de noms

Utiliser un script de maintenance
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).

Utiliser une requête en base de données
To move all pages "Bar:Some page" into namespace 3000, make the following database query:

Pour gérer les pages de discussion :

L'exemple ci-dessus est mauvais. 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.

Supprimer des espaces de noms personnalisés
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. (voir la discussion sur la liste de diffusion).

Example on how to remove and the Topic namespace:


 * désinstaller Flow
 * ajouter temporairement $wgExtraNamespaces[2600] = 'Topic'; à la configuration
 * Use deleteBatch.php to delete all pages in the Topic namespace
 * Remove the $wgExtraNamespaces config

Renommer des espaces de noms personnalisés
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

Eviter les conflits d'espaces de noms
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.

Mettre en forme les espaces de noms
Par exemple, pour appliquer une couleur de fond aux pages d'un espace de noms particulier (et à son espace de noms de discussion correspondant), vous pouvez ajouter le suivant code à votre common.css :

où  est l'index de l'espace de noms et   est la couleur que vous voulez pour son fond.

Voir aussi

 * Namespace manager as originally proposed for MW1.6-wikidata and its successors. Utilisé actuellement par le projet OmegaWiki.
 * - pour utiliser un habillage différent dans un espace de noms
 * - a modified version of the which changes it to provide a namespace manager as a special page.
 * - pour contrôler l'accès aux espaces de noms
 * Extension namespace registration
 * - pour contrôler l'accès aux espaces de noms
 * Extension namespace registration