Muchas carpetas de usuario y otras plantillas agregan automáticamente las páginas en las que aparecen a varias categorías . Esta característica no siempre es deseable y el proceso de deshabilitar o suprimir la categorización automática se conoce como supresión de categorías en las plantillas . Esta guía describe algunos métodos diferentes para suprimir la categorización automática y proporciona ejemplos para cada método. No existen políticas ni pautas estrictas con respecto a la supresión de categorías; sin embargo, esta guía describe los métodos de facto utilizados para implementar la supresión de categorías en la Wikipedia en inglés.
Muchas plantillas y carpetas de usuario están diseñadas para agregar páginas automáticamente en una o más categorías. Hay muchas razones por las que esto podría resultar beneficioso. Las casillas de usuario pueden agrupar a los usuarios en varias categorías de Wikipedia según sus intereses. Los encabezados de WikiProject agrupan páginas relacionadas para que sea más fácil para los miembros de WikiProject localizarlas. Otras plantillas marcan artículos para determinadas acciones agregándolos a categorías administrativas.
Esta puede ser una característica realmente útil y poderosa, pero también puede resultar un poco confusa si alguien quiere mostrar la plantilla en algún lugar distinto al previsto originalmente, como en una página de ayuda o en una galería de plantillas. La página de ayuda o galería se marcaría como cualquier otra página en la que aparezca la plantilla, y esto a menudo no es deseable. Por ejemplo, una página que muestra una plantilla de eliminación no debe marcarse para su eliminación. Es preferible suprimir la categorización automática de la página en ese caso. Esto se conoce como supresión de categorías .
Dentro de la propia plantilla, es bastante fácil suprimir dichos problemas de categorización utilizando las marcas <includeonly> y <noinclude>. Sin embargo, esas características no ayudan al mostrar la plantilla como ejemplo en una página de ayuda o en una galería.
A expensas de un poco de procesamiento adicional en el servidor y haciendo que el código de la plantilla sea un poco más difícil de leer para los humanos, las plantillas o una simple función de analizador pueden suprimir la categorización automática en ciertos espacios de nombres o en cualquier lugar cuando se utilizan atributos de plantilla particulares.
Varios métodos diferentes de supresión de categorías se desarrollaron simultáneamente a lo largo de los años, por lo que no existe un método único o "mejor" para lograr la supresión de categorías. Algunos métodos funcionan mejor en algunas situaciones y otros métodos funcionan mejor en otras situaciones. Los diseñadores de plantillas son libres de elegir cualquiera de los siguientes métodos para suprimir las categorías automáticas, pero se les solicita que documenten claramente qué método se utiliza en la documentación de la plantilla. Se solicitan nuevas plantillas que sigan las técnicas preferidas (cuando varias técnicas logran el mismo resultado). Las plantillas más antiguas que no se utilizan mucho también se pueden modificar para utilizar las técnicas preferidas. No vale la pena adaptar plantillas muy utilizadas para utilizar las técnicas preferidas, a menos que exista otra razón de peso para modificar la plantilla.
Las plantillas que utilizan la supresión basada en espacios de nombres no requieren ninguna configuración por parte de un editor para suprimir la categorización automática fuera del espacio de nombres previsto (por ejemplo, las plantillas de artículos no categorizarán las páginas de discusión ni las páginas de usuario).
Las plantillas de supresión basadas en atributos utilizan |nocat=true
(preferido) o |categories=no
(alternativo) para suprimir la categorización automática. En cualquier lugar donde se deba suprimir esa categorización, simplemente agregue |nocat=true
o |categories=no
como último atributo de la plantilla y (suponiendo que la plantilla se implemente correctamente), la plantilla no agregará la página a ninguna categoría. Consulte la documentación de cada plantilla para determinar cuál de los dos atributos utilizar.
Las técnicas de supresión de categorías se dividen en los siguientes métodos:
Es probable que las plantillas diseñadas para agregarse solo a ciertos tipos de páginas (artículos, páginas de discusión, categorías, otras plantillas, páginas de proyectos, etc.) sean las que más se beneficien de este método. Con este método, las plantillas pueden detectar automáticamente el tipo de página en la que se encuentran y solo categorizar las páginas que están en el espacio de nombres correcto . Por ejemplo, una plantilla que marca artículos que necesitan referencias adicionales puede usar este método para categorizar solo artículos y suprimir la categorización en todos los demás lugares donde aparece la plantilla, como en las páginas de documentación de la plantilla.
A continuación se dan ejemplos.
La categorización automática siempre está activada en estas plantillas de forma predeterminada. Cualquier página en la que aparezca la plantilla se clasifica automáticamente a menos que se pase uno de dos atributos especiales a la plantilla. Esta es una buena opción para plantillas que se utilizan en múltiples espacios de nombres . Por ejemplo, una plantilla de ayuda para escribir que pueda usarse en artículos, páginas de discusión, páginas de proyectos, páginas de usuarios y portales podría ser una buena opción.
A continuación se dan ejemplos.
Este es el método más versátil y complicado para suprimir categorías. Utilizando las dos técnicas anteriores, puede combinar la categorización/supresión predeterminada basada en espacios de nombres con atributos para cambiar la acción predeterminada caso por caso. Esto no debería ser necesario para la mayoría de las plantillas, pero puede resultar útil en algunas de las metaplantillas más complejas que combinan características de varias plantillas relacionadas en una sola plantilla grande. Agrega un grado adicional de dificultad en el diseño y mantenimiento de la plantilla que solo debe considerarse para plantillas que ya son complejas (y que es poco probable que sean editadas por creadores de plantillas novatos) o donde las dos técnicas anteriores no brindan suficiente control.
A continuación se dan ejemplos.
{{Suppress categories|...}}
se puede colocar alrededor de una llamada de plantilla independientemente de que la plantilla admita o no la supresión de categorías.{{Draft categories|...}}
se puede colocar alrededor de una lista de categorías para mostrar enlaces de categorías fuera del espacio principal sin agregar las categorías.Este método es automático y no necesita ningún parámetro para invocar la supresión.
{{Main other|[[Category:Example]]|<!-- Don't categorize when not in main (article) space. -->}}
{{Talk other|[[Category:Example]]|<!-- Don't categorize when not in talk space. -->}}
<includeonly>{{Template other|[[Category:Example]]|<!-- Don't categorize when not in template space. -->}}</includeonly>
<includeonly></includeonly>
; de lo contrario, su plantilla se clasificará.También están {{ usuario otro }}, {{ wikipedia otro }}, {{ archivo otro }}, {{ ayuda otro }}, {{ categoría otro }} y {{ portal otro }} para manejar los otros espacios de nombres.
Si desea categorización/supresión automática en múltiples espacios de nombres o si necesita usar diferentes categorías en diferentes espacios de nombres, use la poderosa plantilla:{{Namespace detect}}
<includeonly> {{ Detección de espacio de nombres
| main = [[Categoría: Categoría del artículo ]]
| charla = [[Categoría: Categoría de charla ]]
| plantilla = [[Categoría: Categoría de plantilla ]]
| other = <!-- No categorizar cuando no esté en el espacio principal, de conversación o de plantilla --> }} </includeonly>
Usar la familia de plantillas es la forma más fácil de habilitar la supresión de categorías basadas en espacios de nombres, pero también puede usar las funciones del analizador #ifeq o #switch para lograr lo mismo.{{Main other}}
<includeonly> {{#switch:{{NAMESPACE}}
| =[[Categoría: Categoría de artículo ]]
| Charla = [[Categoría: Categoría de charla ]]
| Plantilla = [[Categoría: Categoría de plantilla ]]
| #default = <!-- No categorizar cuando no esté en el espacio principal, de conversación o de plantilla --> }} </includeonly>
La siguiente técnica es la técnica estándar recomendada para el método de supresión de categorías basado en atributos.
|nocat=false
para habilitar la categorización automática (en los casos en los que el valor predeterminado sería suprimirla)|nocat=
, |nocat=true
o para suprimir la categorización|nocat=anything else
En otras palabras, establecer "nocat" en cualquier valor que no sea "falso" (incluso en nada) no dará como resultado ninguna categorización.
Desafortunadamente, los nombres de los atributos de supresión de categorías no estaban estandarizados previamente, lo que generó varias variaciones. Los siguientes nombres de atributos que se utilizan habitualmente para indicar cuándo se debe realizar la supresión de categorías son:
|nocat=true
— la técnica estándar recomendada|categories=no
— hace lo mismo pero ya no es el atributo recomendado|category=
— un método alternativo pero no recomendado para la mayoría de las situaciones (razones que se analizan a continuación)|nocat=
donde el valor predeterminado es categorizar automáticamente<includeonly>{{#ifeq: {{lc:{{{nocat|false}}}}} | false |
[[Category:Example]]
|<!-- Category suppressed -->}}</includeonly>
{{#ifeq: {{lc:{{{nocat|false}}}}}
false
| false |
compara el valor de nocat con false para ver si coinciden (es decir, si nocat se estableció explícitamente en false o por defecto en false ). Una coincidencia indicaría que la supresión de categorías no debería desactivarse (es decir, debería realizarse una categorización automática).|<!-- Category suppressed -->
) son información opcional para ayudar a los editores a comprender qué está haciendo la plantilla, pero pueden omitirse para ahorrar espacio y ancho de banda.}}
) finalizan la función del analizador.|categories=no
para suprimir la categorización<includeonly>{{#ifeq: {{lc:{{{categories}}}}} | no ||
[[Category:Example]]}}</includeonly>
{{#ifeq: {{lc:{{{categories}}}}} | no
una función de analizador que determina la respuesta a la pregunta: "¿Se pasó un atributo llamado categorías a esta plantilla con el valor establecido en no ?" ( lc:
convierte todo el texto a minúsculas para facilitar la coincidencia)||
no muestra nada (es decir, suprime la categoría) si la respuesta a esa pregunta es verdadera.}}
finaliza la función del analizador.|nocat=true
y |categories=no
fueron diseñados para lograr lo mismo, pero su lógica aparente está invertida (uno usa "verdadero" y el otro usa "no", pero ambos permiten la supresión de categorías). Dado que |categories=no
es menos obvio (se basa en la negación para habilitar una función), y dado que algunas plantillas usan un atributo llamado "categorías" para otros fines, " |nocat=
" es el nombre de atributo preferido para esta función en todas las plantillas nuevas (y en las más antiguas). si alguien está dispuesto a volver atrás y actualizar las plantillas anteriores).|nocat=
pueden funcionar de manera un poco diferente a lo que se describe aquí. Es posible que solo reconozcan " |nocat=true
" y que otros valores se malinterpreten.lc:
función de analizador para forzar los valores de los atributos a todos los caracteres en minúscula para facilitar la coincidencia; por lo tanto, se recomienda que los editores utilicen siempre valores en minúsculas para estar seguros.|category=
Algunas plantillas lo utilizan para evitar tener que utilizar la función de analizador #ifeq. Dado que el nombre de atributo "categoría" se usa comúnmente para otros fines en muchas plantillas (al igual que "categorías" en menor grado), "categoría" no es un nombre de atributo recomendado para este propósito. Por esa y otras razones, esta técnica no se analiza aquí. Tenga en cuenta que |nocat=
puede servir exactamente para el mismo propósito y es la alternativa recomendada.
La supresión combinada combina métodos de supresión basados en atributos y en espacios de nombres dentro de una única plantilla. Al combinar ambos métodos, la complejidad se duplica. Asegúrese de comprender completamente los otros métodos antes de intentar utilizar el método combinado en una plantilla.
Hay varias formas de lograr la combinación. El siguiente ejemplo es la forma en que Willscrlt prefiere implementar la supresión combinada (que debería funcionar en la mayoría de los casos y se recomienda por motivos de coherencia).
El proceso consiste en comprobar primero los atributos que indicarían que las categorías deberían suprimirse. Si el atributo solicita la supresión de categoría, anula cualquier categorización predeterminada basada en el espacio de nombres. Si no se encuentra ninguna especificación de atributo, utilice la categorización predeterminada basada en el espacio de nombres. Si el atributo solicita explícitamente que no se utilice la supresión de categorías, utilice la categorización predeterminada basada en el espacio de nombres, a menos que el valor predeterminado sea no categorizar. Si el valor predeterminado es no categorizar, utilice el atributo demospace para anular el valor predeterminado y mostrar la categoría de todos modos. Juntas, estas opciones brindan a los desarrolladores de plantillas un control considerable sobre la categorización automática y la supresión de categorías a expensas de un código de plantilla más complejo.
<includeonly> {{#ifeq: {{lc:{{{ nocat| falso }}}}} | falso |
{{ Detección de espacio de nombres
| main = [[Categoría: Categoría del artículo ]]
| charla = [[Categoría: Categoría de charla ]]
| plantilla = [[Categoría: Categoría de plantilla ]]
| otro = {{#ifeq: {{lc:{{{ nocat|false }}}}} | verdadero |
[[Categoría: Otra categoría ]]
| <!-- A menos que nocat=true, no categorice cuando no esté en el espacio principal, de conversación o de plantilla --> }} } }
|<!-- Categoría suprimida por el atributo nocat -->}} </includeonly>
{{#ifeq: {{lc:{{{nocat|false}}}}}
false
| false |
compara el valor de nocat con false para ver si coinciden (es decir, si nocat se estableció explícitamente en false o por defecto en false ). Una coincidencia indicaría que la supresión de categorías no debería desactivarse (es decir, debería realizarse una categorización automática).{{Namespace detect}}
| main =
), clasifíquela en .[[Category:Article category]]
| talk =
), clasifíquela en .[[Category:Talk category]]
| template =
), clasifíquela en .[[Category:Template category]]
| other =
), la categorización depende del valor de nocat
.nocat
se establece explícitamente en "verdadero" ( ), categorice la página en .{{#ifeq: {{lc:{{{nocat|false}}}}}
[[Category:Other category]]
| <!-- Unless nocat=true, don't categorize when not in main, talk, or template space -->
) son información opcional para ayudar a los editores a comprender qué está haciendo la plantilla, pero pueden omitirse para ahorrar espacio y ancho de banda).|<!-- Category suppressed by nocat attribute -->
) son información opcional para ayudar a los editores a comprender lo que hace la plantilla, pero pueden omitirse para ahorrar espacio y ancho de banda).{{Namespace detect}}
comprende muchos más espacios de nombres de los que se muestran aquí y puede utilizar los espacios de nombres que sean apropiados para su situación. Los espacios de nombres "principal", "conversación" y "plantilla" que se muestran aquí son sólo ejemplos de cómo puede utilizar esta función.Si está intentando crear una metaplantilla (una plantilla que combina las características de dos o más plantillas en una sola plantilla), es posible que necesite admitir más de un método de supresión de categorías, porque los editores pueden usar diferentes métodos para solicitar la supresión de categorías. dependiendo de la sintaxis de la plantilla original .
El siguiente método comprueba cualquiera de los dos atributos comunes ( |nocat=true
y |categories=no
) y suprime la categorización automática si alguno de ellos está configurado para suprimir.
<includeonly> {{#ifexpr: {{
#ifeq: {{lc:{}}} | verdadero | 1 | 0 }} + {{
#ifeq: {{lc:{{{categorías|yes}}}}} | no | 1 | 0 }} < 1 |
[[Categoría: Ejemplo ]]
| <!-- Categoría suprimida --> }} </includeonly>
{{#ifexpr:}}
una función de analizador que evalúa una expresión aritmética (como "0+0=0" o "1+0=1"). En este caso evalúa la salida de otras dos funciones del analizador.nocat
se configuró explícitamente en "verdadero". Si así fuera, el resultado sería el número uno. De lo contrario, la salida es cero.categories
se estableció explícitamente en "no". Si así fuera, el resultado sería el número uno. De lo contrario, la salida es cero.|<!-- Category suppressed -->
) son información opcional para ayudar a los editores a comprender lo que está haciendo la plantilla, pero se pueden omitir para ahorrar espacio y banda ancha)