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 directive de configuration. Il est aussi possible de définir des noms d'alias pour les espaces de noms personnalisés (et prédéfinis), en utilisant la directive de configuration.

Création d'un espace de noms personnalisé
Vous pouvez enregistrer des espaces de noms supplémentaires en les ajoutant à la variable globale de votre 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'extensions 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 rendre possible l'installation de ces extensions dans le futur. En conséquence, les indices supérieurs à 3000 sont un bon choix pour les administrateurs systèmes qui souhaitent définir leurs espaces de noms personnalisés. (Aussi, vous devrez éviter les espaces de noms tels que name qui figure déjà dans les espaces de noms par défaut des extensions ).


 * Pair, puis impair.
 * Notez que l'indice du tableau des espaces de noms est à 3000 dans l'exemple ci-dessus.
 * un indice pair représente un espace de noms de sujet.
 * l'indice impair qui suit immédiatement ce nombre représente l'espace de noms 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; c'est à dire que si une extension ou autre doit travailler avec l'espace de noms personnalisé nouvellement créé, assurez-vous que vous l'avez défini et nommé avant d'appeler l'extension en question. Par exemple il ne peut pas être manipulé dans une accroche après l'initialisation, 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 :


 * Un espace de noms personnalisé peut être utilisé pour ranger le contenu qui ne doit pas apparaître parmi les résultats de la page de recherche, par exemple les pages qui ne sont utilisées que pour la transclusion.
 * Certains espaces de noms ont besoin de privilège(s) supplémentaires pour la modification.
 * Vous désirez que certains espaces de noms ne soient pas sujets à certaines limitations ou initialisations par défaut (par exemple )
 * Un préfixe uniforme pour le/les contenu(s) spécifique(s), sur lequel faire les recherches mais uniquement dans cet espace de noms
 * Si vous êtes un développeur MédiaWiki, vous avez besoin parfois d'un espace de noms pour votre/vos extension(s), personnalisé

Traiement des pages existantes
Lors de la sauvegarde des enregistrements de pages, MediaWiki utilise un index numérique d'espace de noms, en même temps que le reste du texte du titre. Ainsi, quand une page est créée dans un espace de noms qui n'existe pas, par exemple "Bar:Some page", ce cas est traité comme étant dans l'espace de noms principal.

Ceci peut causer des problèmes si l'ajout de la définition d'un espace de noms personnalisé pour "Bar" se fait ultérieurement, lorsque MediaWiki cherchera une page indexée par le propre espace de noms, mais ne sera pas capable la trouver, rendant ainsi le contenu inaccessible.

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

Renommer les pages conflictuelles
Si le nombre de pages concernées est petit (par exemple si "Bar" contient cinq pages créées avant que l'espace de noms ait été défini dans la configuration du site), alors l'approche suivante pourrait être envisagée:


 * 1) Décommentez la définition de l'espace de noms dans le fichier de configuration
 * 2) Accèdez à chaque page concernée, et déplacez-la en dehors du pseudo espace de noms, par exemple déplacez "Bar:Some page" vers "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
Dans le répertoire maintenance, il y a un script de maintenance qui réalise l'opération ci-dessus plus efficacement pour un grand nombre de pages;  Il est simple à utiliser, mais comme avec tous les scripts de maintenance MediaWiki, consultez d'abord les informations d'usage disponibles (utiliser  en tant qu'option).

Utiliser une requête en base de données
Pour déplacer toutes les pages "Bar:Some page" dans l'espace de noms 3000, faites la requête de base de données suivante:

Pour gérer les pages de discussion :

Après ces manipulations, exécutez le script et le script  pour mettre à jour les liens internes et les résultats de recherche dans votre wiki. Remarquez que les moteurs de recherche externes tels que Google demandent un certain temps pour mettre à jour leur index.

Supprimer des espaces de noms personnalisés
Le problème évoqué ci-dessus apparait aussi quand la définition d'un espace de noms utilisateur est supprimée; MediaWiki n'est plus conscient de l'index numérique de l'espace de noms, et essaie de rechercher les pages désirées, dans l'espace de noms principal, ce qui conduit à du contenu inaccessible. Ceci apparait rarement, depuis que la plupart des sites n'ont pas besoin de supprimer d'espaces de noms, mais c'est un problème. (voir la discussion sur la liste de diffusion).

Exemple sur la manière d'enlever et l'espace de noms Topic:


 * désinstaller Flow
 * ajouter temporairement $wgExtraNamespaces[2600] = 'Topic'; à la configuration
 * Utilisez deleteBatch.php pour supprimer toutes les pages de l'espace de noms Topic
 * Supprimer la configuration $wgExtraNamespaces

Renommer des espaces de noms personnalisés
Supposez que vous deviez renommer l'espace de noms utilisateur "Foo" en "New" sans réaliser un déplacement massif des pages. Pour faire cela, le moyen le plus simple consiste à conserver l'ID d'espace de noms (ici " ") ainsi que la constante d'espace de noms (ici " "), à modifier le titre (visible) de l'espace de noms et à ajouter l'ancien en tant qu'alias.


 * changer


 * en

Eviter les conflits d'espaces de noms
Afin d'éviter les conflits d’espace de noms, par exemple, votre espace de noms porte le même numéro qu'un espace de noms défini par une extension, la liste des espaces de noms des extensions vous indique les numéros à éviter pour empêcher les conflits.

Déclarer, , $wgContentNamespaces ou pour un ID qui n'est associé à aucun espace de noms présent dans $wgExtraNamespaces ne cassera pas le wiki; MediaWiki ignore discrètement ces 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 tel que proposé à l'origine pour MW1.6-wikidata et ses successeurs. Utilisé actuellement par le projet OmegaWiki.
 * - pour utiliser un habillage différent dans un espace de noms
 * - une version modifiée de qui la transforme pour obtenir un gestionnaire d'espaces de noms sous la forme d'une page spéciale.
 * - pour contrôler l'accès aux espaces de noms
 * Enregistrement des espaces de noms des extensions
 * - pour contrôler l'accès aux espaces de noms
 * Enregistrement des espaces de noms des extensions