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.

Other languages:
العربية • ‎català • ‎Deutsch • ‎Zazaki • ‎English • ‎español • ‎suomi • ‎français • ‎italiano • ‎日本語 • ‎polski • ‎português • ‎português do Brasil • ‎русский • ‎Türkçe • ‎українська
PD Nota: Ao editar esta página, concorda em publicar a sua contribuição no âmbito da licença CC0. Veja as páginas de ajuda do 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)

Uma forma de testar se um parâmetro foi passado na chamada a uma predefinição é:

{{#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