Manual:Using custom namespaces/es

Además de disponer de los espacios de nombres incorporados de serie, es posible añadir espacios de nombres personalizados a una instalación de MediaWiki, para así poder clasificar el contenido de forma más detallada y permitir una organización más lógica.

Los espacios de nombres personalizados son fáciles de administrar utilizando la directiva de configuración. También es posible definir nombres de alias para los espacios de nombres, tanto los personalizados como los ofrecidos por defecto, usando la directiva de configuración.

Cómo crear un espacio de nombres personalizado
Los espacios de nombres personalizados se registran añadiéndolos a la variable global. Todos los espacios de nombres deben contar con un índice numérico único en esta matriz. A modo de ejemplo de la creación rápida de un espacio de nombres personalizado, añadir las siguientes líneas a tu archivo  define un espacio de nombres "Foo" con el índice 3000, así como su espacio de nombres "Foo discusión" asociado:


 * Elige un número que no esté usado
 * Como convención, los espacios de nombres comprendidos entre 100 y 199 están reservados para espacios de nombres específicos del sitio, si bien existen algunas extensiones que no siguen esta convención. Los desarrolladores de extensiones usan números más altos, hasta el 32767. Al elegir un índice, debes evitar cualquier número que ya se esté usando en los espacios de nombres por defecto de las extensiones, puesto que en el futuro podrías querer instalar alguna extensión. Por lo tanto, cualquier número del 3000 en adelante es una buena elección para los administradores del sistema a la hora de definir sus propios espacios de nombres.


 * Primero par, después impar
 * Fíjate que el índice en la matriz del espacio de nombres es 3000 en el ejemplo de arriba.
 * un índice de espacio de nombres par denota un espacio de nombres de tema.
 * el índice impar inmediatamente a continuación de ese número denota el espacio de nombres de discusión que lleva asociado.


 * Crea también el espacio de nombres para discusión
 * Lo habitual es crear un espacio de nombres de "discusión" por cada espacio de nombres personalizado que se defina. Con este ejemplo, si trasladas una página al espacio de nombres "Foo", se te solicitará que traslades también su página de discusión, si la tiene, y en caso de hacerlo, MediaWiki colocará la página de discusión en "Foo discusión".


 * Evita los espacios
 * Usa guiones bajos en lugar de espacios al registrar espacios de nombres. En este contexto, "Mi espacio" no es válido; debes usar "Mi_espacio".

La parte en mayúsculas no permite guiones, pero pueden añadirse al título del prefijo. Ejemplo:
 * No uses guiones


 * Nombra los números que elijas
 * El ejemplo define constantes para los IDs del espacio de nombres de forma que luego puedas hacer referencia fácilmente a estos espacios de nombres en la configuración, por ejemplo en, o.

Podrías seguir y configurar algunos ajustes más para tu nuevo espacio de nombres.


 * Hazlo pronto
 * La manipulación de  debe completarse durante la inicialización de MediaWiki; por ejemplo, no puede manipularse en un gancho post-inicialización como es.


 * Ojo con posibles colisiones con protocolos URL
 * El código de enlazado de MediaWiki conoce cierto número de protocolos URL, definidos en la variable . Si el nombre de tu espacio de nombres es idéntico al de uno de estos protocolos, tendrás problemas para crear enlaces a páginas que se encuentren en tu espacio de nombres personalizado. Esto suele suceder principalmente cuando se intenta crear un espacio de nombres llamado "News", dado que  es un protocolo URL para los grupos de noticias NNTP.
 * Para evitar este problema, puedes des-registrar el protocolo URL que te estorbe añadiendo el siguiente código a LocalSettings.php (sustituyendo  por el nombre todo en minúsculas del protocolo que quieras eliminar):

En extensiones
Las extensiones a menudo añaden sus propios espacios de nombres, por ejemplo el espacio de nombres "Topic" en el caso de la extensión. Una extensión puede añadir información incondicionalmente a  tal como se describe arriba, o si su sistema de registro de espacios de nombres es condicional (por ejemplo,  sólo define su espacio de nombres "Schema" en el wiki donde almacena esquemas), entonces puede añadir una función de manejador al gancho  que decida qué hacer.

La franja temporal para las extensiones que se registran es sutil. Las funciones que las extensiones registran con se ejecutan demasiado tarde para registrar espacios de nombres adicionales. Por lo tanto, las extensiones deberían vincular el gancho  en contexto de archivo (en "MiExtensión".php) y comprobar ahí si el wiki debería activar o no el espacio de nombres extra. Las extensiones pueden configurar de forma incondicional permisos de espacios de nombres y manejadores de contenido en contexto de archivo, dado que no necesitan que el espacio de nombres se cree.

El nuevo sistema de registro extension.json dispone de un parámetro  para que una extensión pueda indicar una lista de sus espacios de nombres que deberían siempre existir. También soporta el gancho.

Espacios de nombres de contenido
Al generar la página de estadísticas del sitio (mira Special:Statistics), MediaWiki usa los valores almacenados en la base de datos para calcular determinadas cifras totales. Una cifra interesante de este tipo es la que contiene el "número de cartículos" o "número de páginas de contenido".

Para que una página sea considerada como un artículo -es decir, de contenido generado por algún usuario- la página debe:


 * encontrarse en el espacio principal de nombres, o en un espacio de nombres declarado como contenido
 * no ser una página de redirección
 * contener al menos un enlace interno

Al crear espacios de nombres personalizados pensados para albergar contenido, es una buena idea declararlos como tales en la configuración. Esto se hace mediante la directiva de configuración.

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 namespace require additional privilege(s), i.e. for reading or editing
 * You want certain namespace not to be subjected to certain limitation or default settings ( for example)
 * A uniform prefix for specific content(s), which is searchable for that namespace only
 * If you're an MW developer, sometimes you need to have a custom namespace for your extension(s)

Dealing with existing pages
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:

Note the search engine of your Wiki may take a certain time to actualise his results.

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

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 following code to your common.css:

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