Help:Parâmetros de funções nas predefinições

This page is a translated version of the page Help:Parser functions in templates and the translation is 100% complete.
PD Nota: Quando modificais esta página, estais a aceitar que a vossa contribuição se publique no marco de CC0. Olhem Páginas de ajuda de domínio público para mais informação. PD

Ao aplicar funções do analisador sintático aos parâmetros das predefinições, pode usar uma barra vertical ("|") para fornecer um valor por omissão, que será adotado como valor se o parâmetro não for passado (estiver indefinido). Usado numa função #if, o texto não expandido do parâmetro indefinido é avaliado como verdadeiro, o que pode ser um resultado inesperado.

Testar o valor de um parâmetro com, e sem, valores por omissão
Parâmetro {{{1}}}, {{{param}}} {{{1|}}}, {{{param|}}} {{#if:<parâmetro>|True|False}}
Descrição Exemplo, sem nome e com nome {{{1}}}, {{{param}}} {{{1|}}}, {{{param|}}}
Não é passado. Mais apropriado para parâmetros passados por nome. {{template}} {{{1}}} True False
É passado, mas vazio ou com valor nulo. {{template|}}, {{template|1=}}, {{template|param=}} False False
É passado com valor, não vazio, não nulo. {{template|value}}, {{template|1=value}}, {{template|param=value}} value value True True
  • {{{1}}}
Exemplo A
{{#if: {{{1}}} | O parâmetro 1 não é passado, ou é passado e tem valor não nulo/não vazio. | O parâmetro 1 é nulo. Só contém string(s) vazias (texto vazio) ou breaking space(s) (espaços normais que permitem quebra de linha) etc.}}
Resultado
O parâmetro 1 não é passado, ou é passado e tem valor não nulo/não vazio.
  • {{{1|}}}
Exemplo B
{{#if: {{{1|}}} | O parâmetro 1 é passado e tem valor não nulo/não vazio. | O parâmetro 1 não é passado, ou é passado mas tem valor nulo. Contém só string(s) vazias (texto vazio) ou breaking space(s) (espaços normais que permitem quebra de linha) etc.}}
Resultado
O parâmetro 1 não é passado, ou é passado mas tem valor nulo. Contém só string(s) vazias (texto vazio) ou breaking space(s) (espaços normais que permitem quebra de linha) etc.

O segundo caso ({{{1|}}}, exemplo B), em que o parâmetro é passado e vazio, é frequentemente a forma desejada para lidar com as situações em que o parâmetro existe, mas consiste só de espaço vazio.

Testar e passar parâmetros indefinidos (não passados)

Para distinguir entre um parâmetro passado mas possivelmente vazio e um parâmetro indefinido (não passado), compare-o a si próprio usando {{#ifeq:}} e use "diferentes valores por omissão". Os valores por omissão usados são indiferentes desde que sejam distintos, portanto tipicamente usam-se valores curtos. Os seguintes exemplos são todos equivalentes:

{{#ifeq:{{{v|+}}}|{{{v|-}}}| v foi passado (e pode estar vazio) | v não foi passado }}
{{#ifeq:{{{v|}}}|{{{v|-}}}| v foi passado (e pode estar vazio) | v não foi passado }}
{{#ifeq:{{{v|}}}|{{{v}}}| v foi passado (e pode estar vazio) | v não foi passado }}

Em casos raros, uma predefinição pode comportar-se de formas diferentes quando não é passado um parâmetro e quando este é passado mas está vazio. Se a predefinição for usada dentro de uma segunda predefinição (que use os mesmos parâmetros e com o mesmo nome), uma forma de garantir que os parâmetros não passados continuam indefinidos é a seguinte (a técnica também funciona para parâmetros numerados):

{{wrapped_template|
normal_parameter={{{normal_parameter|}}}|
sensitive_parameter{{#if:{{{sensitive_parameter|}}}||NULL}}={{{sensitive_parameter}}}
}}

Se normal_parameter for passado e não estiver vazio, wrapped_template recebe-o em todos os casos. Se normal_parameter for passado mas estiver vazio, e se não for passado, wrapped_template recebe um normal_parameter vazio.

Em contraste, se sensitive_parameter for passado definido, wrapped_template receberá um parâmetro definido; se sensitive_parameter não for passado e estiver indefinido, o #if altera o nome do parâmetro para sensitive_parameterNULL. Para que o comportamento seja o esperado, este nome de parâmetro com sufixo tem de não ter significado para wrapped_template.

Ver também