Ajuda:Modelo

Da Wikipédia, a enciclopédia livre
Ir para a navegação Saltar para pesquisar

Um modelo é uma página da Wikipedia criada para ser incluída em outras páginas. Os modelos geralmente contêm material repetitivo que pode precisar aparecer em um número maior de artigos ou páginas. Eles são comumente usados ​​para mensagens padrão, avisos ou avisos padronizados , caixas de informações , caixas de navegação e propósitos semelhantes.

O método mais comum de inclusão é chamado de transclusão , onde o wikitexto da página de destino contém uma referência ao modelo, usando a sintaxe. Outro método é a substituição , onde o conteúdo do modelo é copiado para o wikitexto da página de destino, apenas uma vez, quando é salvo. {{Template name}}

Ajuda:Um guia rápido para modelos fornece uma breve introdução ao assunto. Há mais ajuda do MediaWiki e Wikimedia em mw:Help:Templates , m:Help:Template e m:Help:Advanced templates .

Link do modelo para o modelo

Para incluir o nome completo real do modelo como texto (incluindo as chaves ao redor) em um artigo da Wikipedia, aplique o modelo de link de modelo . A principal motivação para fazer isso está na instrução e na documentação. Um pequeno exemplo é o código:

{{tl|foo}}
gera
{{ foo }}

Descrição geral

Uma visão geral básica de como os modelos funcionam (vídeo de 8 minutos)

A maioria dos modelos são páginas no namespace do modelo , o que significa que eles têm títulos no formato "Modelo: XXXX ". É possível, no entanto, transcluir e substituir de qualquer namespace, [a] e, portanto, algumas páginas de modelo são colocadas em outros namespaces, como o namespace do usuário . As páginas de modelo têm páginas de discussão associadas .

Os modelos podem conter qualquer wikitexto desejado , incluindo chamadas para outros modelos. Eles têm algumas capacidades de programação limitadas: valores personalizáveis ​​(chamados de parâmetros ); cálculo e ramificações (usando funções de analisador ); e acesso a variáveis ​​específicas do wiki ( palavras mágicas ), como datas, horas e nomes de páginas. Eles também podem conter tags que definem quais partes do wikitexto devem ser incluídas quando o modelo é transcluído ou substituído. Isso significa que a aparência da página do modelo em si não precisa ser a mesma do conteúdo transcluído (por exemplo, pode conter documentação, categorias etc. para o modelo).

Como fazer: Para transcluir um modelo em um artigo ou página, digite o wikitexto no local onde o modelo deve aparecer. A primeira letra pode ser indiferentemente maiúscula ou minúscula. {{Template name}}

O prefixo Template:antes do nome do modelo é o padrão e não precisa ser incluído. No entanto, para modelos armazenados em outros namespaces, o prefixo, como User:, deve ser especificado. Para transcluir uma página no mainspace , preceda seu título com dois pontos, como . {{:Page name}}

Observação: a tentativa de transcluir um modelo que não existe produz um link vermelho , assim como um link para qualquer outra página inexistente. Seguir o link permite criar esse modelo específico. Não é possível transcluir páginas entre projetos (como Wikipedias em idiomas diferentes ou MediaWiki)—para usar um modelo em outro projeto de idioma, uma cópia do modelo deve ser criada nesse projeto.

Sintaxe de uso

Parâmetros

A sintaxe básica de transclusão fornecida acima pode ser estendida pela adição de parâmetros , que são usados ​​para controlar a saída do modelo. A sintaxe para isso é onde está o nome do modelo, e cada um pode conter apenas um valor (eles são chamados de parâmetros não nomeados ) ou ter o formato ( parâmetros nomeados ). O primeiro, segundo, terceiro, etc. parâmetros sem nome receberão os nomes , , , etc. {{Template name|parameter|parameter|...}}Template nameparametername=value123

Caracteres de espaço em branco (espaços, tabulações, retornos) são retirados do início e do fim dos nomes e valores dos parâmetros nomeados , mas não do meio: portanto, {{ ... | myparam = this is a test }}tem o mesmo efeito que {{ ... |myparam=this is a test}}. Isso não se aplica a parâmetros sem nome , onde todos os caracteres de espaço em branco são preservados.

Quais parâmetros (se houver) podem ou devem ser passados ​​para um modelo e como eles devem ser nomeados depende da codificação desse modelo. Os parâmetros nomeados podem ser definidos em qualquer ordem. Parâmetros supérfluos ou com nomes incorretos serão ignorados; parâmetros indefinidos serão atribuídos a valores padrão. Se um parâmetro for definido mais de uma vez, o último valor terá efeito.

O valor de um parâmetro pode ser a string vazia, como quando o pipe ou o sinal de igual é seguido imediatamente pelo próximo pipe ou pelas chaves de fechamento. Isso é diferente de omitir o parâmetro completamente, o que o deixa indefinido, embora os modelos sejam frequentemente codificados para se comportarem da mesma forma em ambos os casos.

Os parâmetros podem ser especificados (e não farão nada) mesmo que não sejam representados no código do modelo. Por exemplo, |reason=é frequentemente usado como um pseudoparâmetro para explicar brevemente no wikisource por que o modelo foi colocado. [b] Alguns templates chamam Module:Check para parâmetros desconhecidos para avisar o editor se um parâmetro está sendo usado que não está contabilizado no código do template; isso é usado principalmente para infoboxes e outros modelos com um grande número de parâmetros complicados, onde a presença de um desconhecido geralmente é um erro não intencional. Se você atualizar esse modelo para incluir um novo parâmetro, sua chamada para o módulo também deverá ser atualizada para incluir o novo parâmetro.

Ligando

Usar um modelo é como chamar uma função em uma linguagem de programação – chame-a e ela retornará um valor (a saída ). Assim como as funções, alguns modelos aceitam parâmetros que alteram a saída.

No MediaWiki , o software wiki que a Wikipedia usa, as variáveis ​​têm um significado mais específico que as distingue dos modelos, mas ambas são identificadas por chaves {{ }} duplas e ambas retornam um valor.

Enquanto os nomes de variáveis ​​do MediaWiki são todos em maiúsculas, os nomes de templates têm os mesmos recursos básicos e limitações que todos os nomes de página : eles diferenciam maiúsculas de minúsculas (exceto para o primeiro caractere); sublinhados são analisados ​​como espaços; e não podem conter nenhum destes caracteres: # < > [ ] | { }. Isso ocorre porque eles são reservados para marcação wiki e HTML .

O sinal de número # é chamado de identificador de fragmento porque denota um fragmento ou seção de um documento (como uma seção em um artigo da Wikipedia). Embora possa ser usado para vincular a uma seção de uma página de modelo (como Template:Portal#Example ), não há motivo para colocar um identificador de fragmento ou nome de fragmento em uma referência de modelo. Em , por exemplo, a string não tem propósito e, portanto, é ignorada. {{Portal#Location|Books}}#Location

Substituição

Quando um modelo é substituído, seu conteúdo é codificado na página em vez de transcluído . Para saber como e quando substituir um modelo, consulte Ajuda:Substituição § Quando usar substituição .

Exemplos básicos de uso de modelos

Observação: se você quiser experimentar qualquer um desses, use o modelo sandbox , Special:ExpandTemplates ou sua página de usuário ou sandbox.

Um exemplo de modelo muito simples pode ser encontrado em Template:TM , que se expande para colocar o símbolo de marca registrada (™), vinculado ao artigo de marca registrada , nesse ponto do texto. Um programador diria que o modelo retorna o símbolo da marca registrada.

Clique em Template:TM , depois clique na guia "Editar fonte" para ver o código do modelo (seu wikitexto). A parte "ativa" desse código, chamada de expansão do modelo, é o link único [[Trademark|™]]. O restante do wikitexto é colocado entre tags, então ele é exibido na própria página do modelo, mas não será exibido quando o modelo for usado (ou chamado) em outra página. <noinclude>

Para transcluir Template:TM para outra página (ou seja, para usá-lo em outra página), digite no wikitexto da página de destino e pressione . A página será exibida com a chamada do modelo substituída pela expansão do modelo, como se o wikitexto realmente estivesse contido naquele ponto. A página exibida conterá, portanto, o wikilink " ". {{TM}}Show preview[[Trademark|™]]

Por exemplo, digite e você verá "O símbolo de marca registrada é " ao visualizar a página ou após salvar a alteração. Você pode usar modelos sem conhecer os detalhes de seu código; você só precisa se lembrar do resultado que eles produzem, que geralmente é descrito na página do modelo. The trademark symbol is {{TM}}

Outra maneira de usar um modelo é substituí -lo. Se você digitar e visualizar ou salvar a página, verá novamente "O símbolo de marca registrada é ". Se você olhar novamente para o wikitexto salvo, [c] no entanto, você verá que as chamadas do modelo realmente foram substituídas pela expansão do modelo quando você salvou a página. O link entre o texto de saída e o modelo agora está quebrado e a saída não será afetada por alterações futuras no modelo (como seria no caso de transclusão). The trademark symbol is {{subst:TM}}

Exemplos com parâmetros

Um exemplo de template que recebe parâmetros é o template . Tente digitar na sandbox—ela produzirá o seguinte texto: {{about}}{{about|how to use templates|how to use modules|Help:Lua}}

O modelo usa três parâmetros sem nome (também chamados de parâmetros posicionais) no exemplo acima, mas o mesmo modelo também pode ser usado com diferentes números de parâmetros para fornecer resultados ligeiramente diferentes, conforme explicado na documentação do modelo . Por exemplo, . Observe o uso de um parâmetro vazio - neste caso, as barras consecutivas significam que o primeiro parâmetro que foi "passado" para o modelo é uma string vazia, o que neste modelo fará com que ele omita a frase inicial "sobre". Isso produz:{{about}}{{about||how to use modules|Help:Lua}}

Outros modelos, particularmente os mais complexos, usam parâmetros nomeados ou uma mistura de parâmetros nomeados e não nomeados. Um exemplo simples é Template:Payoff matrix , usado para gerar uma grade 2 por 2. Por exemplo:

Marcação Renderiza como
{{matriz de pagamento | UL = 5 | UR = 7 | DL = 2 | RD = 9 | Nome = Exemplo de uso }}
Deixou Certo
Acima 5 7
Abaixo 2 9
Exemplo de uso

Veja a página do modelo para mais possibilidades. Observe que o modelo é usado aqui sem definir todos os seus parâmetros possíveis - parâmetros indefinidos recebem valores padrão.

Os espaços ao redor dos sinais de igual e antes e depois dos parâmetros são usados ​​apenas para maior clareza - eles não são necessários e são ignorados quando o modelo é avaliado (embora esse não seja o caso de parâmetros sem nome). No entanto, os nomes dos parâmetros fazem distinção entre maiúsculas e minúsculas; por exemplo, não é possível substituir DRpor drou dRno exemplo acima. Parâmetros com nomes que não são usados ​​pelo modelo são simplesmente ignorados.

Examinar o código-fonte do modelo mostra a marcação de tabela padrão com algumas entidades de colchetes triplos extras representando os parâmetros:

{| id="Payoff matrix" style="background:white; float: {{{ Float|right }}} ; clear:right; text-align:center;" align= {{{ Float|right }}} cellpacing=0 cellpadding=8 width= {{{ Width|225 }}}
|-
|estilo="largura:33%; "|
|style="largura:33%; borda inferior: preto sólido 1px;"| {{{ 2L|Esquerda }}} 
|style="width:33%; border-bottom: preto sólido 1px;"| {{{ 2R|Direito }}}
|-
|style="border-right: preto sólido 1px; text-align: right; "| {{{ 1U|Up }}} 
|style="borda direita: preto sólido 1px; borda inferior: preto sólido 1px; plano de fundo: {{{ ULc|branco }}} ; tamanho da fonte:120%; "| {{{ UL|0, 0 }}} 
|style="border-right: solid black 1px; border-bottom: solid black 1px; background: {{{ URc|white }}} ; font-size:120%; "| {{{ UR|0, 0 }}}
|-
|style="border-right: preto sólido 1px; text-align: right; "| {{{ 1D|Baixo }}} 
|style="borda-direita: preto sólido 1px; borda inferior: preto sólido 1px; fundo: {{{ DLc|branco }}} ; tamanho da fonte:120%; "| {{{ DL|0, 0 }}} 
|style="border-right: solid black 1px; border-bottom: solid black 1px; background: {{{ DRc|white }}} ; font-size:120%; "| {{{ DR|0, 0 }}}
|-
|style="tamanho da fonte: 90%;" colspan=3 | '' {{{ Nome|{{PAGENAME }}} }} ''
|}

A entidade instrui o modelo a usar o parâmetro nomeado ou o texto se o parâmetro não estiver presente na chamada. {{{2L|Left}}}2LLeft

Dicas de uso e soluções alternativas

Os seguintes pontos podem valer a pena notar ao usar modelos:

  • Os modelos não são o único método de transclusão , também pode haver métodos topicamente mais apropriados, como a transclusão seletiva .
  • Um parâmetro sem nome não pode conter um sinal de igual comum, pois isso seria interpretado como a definição de um parâmetro nomeado. [d] Para passar um sinal de igual em um parâmetro sem nome (por exemplo, em uma URL com pares nome-valor ), substitua o sinal de igual pelo template especial , que retorna um sinal de igual que não será interpretado. Outro método é substituir o parâmetro sem nome (e quaisquer parâmetros sem nome subsequentes) por parâmetros com nome — o primeiro parâmetro sem nome é equivalente a um parâmetro com nome e assim por diante. Para chamar template com o valor literal do primeiro parâmetro, digite ou .{{=}}|1={{done}}a=b{{done|a{{=}}b}}{{done|1=a=b}}
  • Da mesma forma, não é possível usar um caractere de barra vertical comum |nos parâmetros do modelo, pois ele será interpretado como um separador. [e] Desta vez, o problema pode ser resolvido usando a palavra mágica no lugar do pipe, ou - se o pipe não for para ser analisado em um nível superior - usando a entidade HTML . Alternativamente, para incorporar wikitables em modelos, você pode usar para evitar arquivos .{{!}} &#124;{{Wikitable}}{{!}}
  • Lembre-se de que os caracteres de espaço em branco (espaços, tabulações, retornos de carro e feeds de linha) não são removidos automaticamente do início e do fim dos parâmetros sem nome, ao contrário dos parâmetros nomeados. A inclusão de tais caracteres (ou quaisquer outros caracteres não visíveis em qualquer parâmetro) pode, em alguns casos, afetar o comportamento do modelo de maneiras inesperadas. (Os designers de modelo podem usar para remover espaços em branco indesejados em parâmetros sem nome.){{Trim}}
  • Na documentação e discussões, geralmente é conveniente poder produzir a sintaxe de chamada do modelo com um link para o modelo em questão, mas sem realmente chamar o modelo. Isso pode ser feito facilmente usando o modelo (o modelo " t emplate l ink"). Por exemplo, produz {{ Exemplo }}. Existem vários outros modelos de vinculação de modelos disponíveis com diferentes funcionalidades.{{tl}}{{tl|Example}}
  • Quando um modelo é alterado (quando o modelo ou um de seus submodelos é editado), a alteração será refletida em todas as páginas nas quais o modelo é transcluído. No entanto, a alteração pode não ficar visível em todas as páginas imediatamente; uma versão anteriormente armazenada em cache de uma página, com base na versão anterior do modelo, pode continuar sendo exibida por algum tempo. Use a função de limpeza para forçar a exibição de uma página usando as versões mais recentes de modelos, inclusive na própria página de modelo, se ela contiver exemplos de uso.
  • Ao visualizar versões antigas de páginas, lembre-se de que os modelos serão transcluídos como estão agora, não necessariamente como eram quando a versão da página antiga estava ativa.
  • Para listar todas as páginas nas quais um modelo é transcluído, use o que links aqui na página do modelo. Isso não incluirá as páginas em que o modelo foi substituído.
  • Para obter uma lista de modelos transcluídos em uma página, clique em "Editar" e encontre a lista abaixo da janela de edição. Essa lista também inclui os submodelos usados ​​pelos modelos que são transcluídos diretamente. Para obter essa lista para uma seção de página, uma versão antiga da página, [f] ou sua versão recém-editada antes de salvar, clique Show previewna página de edição apropriada.
  • Existem limites para o número e complexidade dos modelos que um artigo pode ter. Consulte a seção " § Expandir limites " para obter ajuda para resolver isso.
  • Se você quiser que o modelo deixe um carimbo de hora ou assinatura , você pode escrever <noinclude><nowiki></noinclude>~~~~~<noinclude></nowiki></noinclude>, mas isso só funcionará se você substituir o modelo. Se você transcluir, você obterá ~~~~~.
  • Para melhorar a legibilidade, geralmente os programadores gostam de dividir o código com novas linhas e indentá-lo. Infelizmente, o software MediaWiki não permite essa funcionalidade; em muitos casos, essas novas linhas criadas especificamente são tratadas pelo software como conteúdo. Uma solução possível é adicionar <!--antes de cada caractere de nova linha e -->depois dele, o que produz um comentário HTML .

Criação e edição de modelos

Os modelos são criados e editados da mesma forma que qualquer outra página: escolha um nome apropriado, navegue até essa página e clique na guia "Editar" ou crie uma nova página conforme necessário. Como mencionado acima, os modelos são normalmente colocados no namespace do modelo , embora os modelos destinados ao seu uso pessoal ou para experimentação possam ser criados em seu próprio espaço de usuário . Qualquer coisa que possa ser incluída em uma página ou artigo normal pode ser incluída em um modelo, incluindo outros modelos (chamados de submodelos ). Os modelos geralmente fazem uso de recursos de programação - parâmetros, funções do analisador e outras palavras mágicas— que permitem que o conteúdo transcluído varie dependendo do contexto. Existem também tags especiais para controlar quais informações são transcluídas e quais não são.

Antes de criar um modelo, faça uma pesquisa rápida por modelos existentes (como explorar Category:Wikipedia templates ) para ver se já existe um modelo que faça o que você deseja ou um modelo semelhante cujo código possa ser copiado e modificado (ou deixado em lugar e expandido). Procure modelos genéricos nos quais o novo modelo possa se basear; por exemplo, os modelos navbox podem ser facilmente criados chamando o genérico Template:Navbox .

Não existe uma regra rígida sobre qual nome escolher para um modelo – faça-o curto, mas razoavelmente descritivo. Se existirem modelos semelhantes, tente seguir um padrão de nomenclatura consistente. Os modelos podem ser renomeados sem quebrar as transclusões existentes (o que é chamado de breakage ), desde que um redirecionamento para o novo nome do modelo seja deixado para trás.

Seja extremamente cuidadoso ao editar modelos existentes — as alterações feitas podem afetar um grande número de páginas, muitas vezes de maneiras que você pode não esperar. Por esta razão, muitos templates de alto uso são protegidos contra edição, exceto por administradores e editores de template ; outros editores podem propor mudanças na página de discussão. Alguns modelos oferecem um sandbox e casos de teste para experimentação.

Para propor a exclusão ou fusão de modelos não utilizados ou inadequados ou modelos que podem ser facilmente mesclados, vá para Modelos para discussão (TfD).

Parâmetros de manipulação

Os valores dos parâmetros que podem ser alimentados em um modelo são representados no código do modelo por itens entre chaves triplas :

  • O código {{{xxx}}}será substituído pelo valor do parâmetro denominado xxx. estes são conhecidos como parâmetros nomeados s .
  • Os códigos {{{1}}}, {{{2}}}, e assim por diante serão substituídos pelo primeiro, segundo e assim por diante parâmetro sem nome (ou o valor de um parâmetro chamado 1, 2, etc.); estes são conhecidos como parâmetros posicionais s .

Se um parâmetro não tiver um valor atribuído, nenhuma substituição ocorrerá; isso significa que se nenhum valor for passado para o parâmetro |xxx=, o valor da expressão {{{xxx}}}dentro do template será literalmente {{{xxx}}} , não o 'em branco' que você esperava. Um comportamento mais intuitivo pode ser alcançado especificando valores de parâmetros padrão. Isso é feito com a sintaxe de pipe : {{{xxx|dflt}}}especifica o valor padrão dfltpara o parâmetro nomeado |xxx=e {{{1|dflt}}}especifica o valor padrão dfltpara o primeiro parâmetro sem nome. Na maioria das vezes, isso é usado para especificar valores padrão nulos, como {{{1|}}}ou {{{xxx|}}}.

Os aliases de parâmetro são um caso especial de valores padrão. Por exemplo, se os parâmetros |1=, |text=e |message=são nomes para o mesmo parâmetro, então wikitexto {{{message|{{{text|{{{1|}}}}}}}}}pode ser usado. Se mais de um desses parâmetros for fornecido, então messageterá prioridade, seguido por texte, finalmente, pelo primeiro parâmetro sem nome. Ou seja, se um modelo contendo esse wikitexto receber os parâmetros |message=A|text=B, o wikitexto será expandido para A.

Devido aos múltiplos usos da sintaxe de chave dupla e chave tripla, as expressões às vezes podem ser ambíguas. Pode ser útil ou necessário incluir espaços para resolver essa ambiguidade. Por exemplo, {{ {{{xxx}}} }}or {{{ {{xxx}} }}}, em vez de digitar cinco chaves consecutivas, pode ser mais legível para humanos. No entanto, tome cuidado com espaços em branco indesejados que aparecem em expansões de modelo.

Caso especial: parâmetros dentro de uma tag de abertura no estilo XML

Os parâmetros não são expandidos quando são agrupados em tags. Eles também não são expandidos se colocados dentro da tag de abertura de estilo XML real. Assim, o seguinte não funcionará em um modelo: <nowiki>

  • <ref name={{{param}}}> Smith, Adam (1776)...</ref>

porque o parâmetro não é expandido. Em vez disso, você pode usar a {{#tag:}} função parser , que é, por exemplo, usada para gerar o elemento; veja também Ajuda:Palavras mágicas § Formatação . Portanto, o exemplo a seguir funcionará: {{sfn}}<ref>...</ref>

  • {{#tag:ref | Smith, Adam (1776)... | nome={{{param}}} }}

Atenção: URLs com excesso de extensão

Se o valor de um parâmetro for (ou terminar com) um URL , verifique se ele é exibido na Wikipedia com o link estendido por um ou mais caracteres após o URL para que clicar no link cause um erro ou falha. Certifique-se de que, após o processamento pelo software, um espaço flexível ( não um espaço rígido ou ininterrupto ) segue o URL, independentemente de você ou um usuário fornecer o URL ou se ele foi gerado por processamento automatizado. Possivelmente, o código-fonte pode conter ou gerar um espaço que é descartado no processamento ou pode não haver espaço nele. Corrija o código-fonte, talvez forçando um espaço flexível a aparecer após o URL. O modelo pode ser útil. {{spaces}}

Variáveis ​​do sistema e lógica condicional

O código do modelo geralmente usa as variáveis ​​e funções do analisador descritas em Ajuda:Palavras mágicas para fazer com que o comportamento do modelo dependa do ambiente (como a hora ou o namespace atual) ou os valores de parâmetro que são passados ​​para ele. Eles também podem ser usados ​​para cálculos aritméticos, mas certos recursos de programação padrão, como loops e atribuição de variáveis, não estão disponíveis. A manipulação de string completa também não está disponível; alguns modelos que fornecem essa funcionalidade foram criados, mas são ineficientes e imperfeitos.

Algumas das variáveis ​​e funções usadas com mais frequência estão listadas abaixo. Para mais, veja Help:Magic words e a documentação mais completa nas páginas do MediaWiki mw:Help:Magic words e mw:Help:Extension:ParserFunctions .

Exemplos de funções principais do analisador
Descrição Texto inserido Resultado
Texto em maiúsculas {{uc: Heavens to BETSY! }} CÉUS PARA BETSY!
Texto em minúsculas {{lc: Heavens to BETSY! }} céus para Betsy!
Obtendo um nome de namespace {{NS: 1 }} Palestra
Obtendo um URL da Wikipedia {{fullurl: pagename }} //en.wikipedia.org/wiki/Pagename

A extensão ParserFunctions fornece mais funções de analisador orientadas à programação.

Exemplos de funções do analisador de extensão
Descrição Texto inserido Resultado
Testando a igualdade entre duas strings (ou parâmetros) {{#ifeq: yes | yes | Hooray...! | Darn...! }} Viva...!
{{#ifeq: yes | no | Hooray...! | Darn...! }} Droga...!
Testando se uma string (ou parâmetro) contém algo (além de espaços em branco) {{#if: {{{param|}}} | Hooray...! | Darn...! }} Droga...!
Fazendo um cálculo (matemática)
[área do círculo de raio 4, com 3 casas decimais]
{{#expr: ( pi * 4 ^ 2 ) round 3 }} 50.265
Testando o resultado de um cálculo
[1230 é par ou ímpar?]
{{#ifexpr: 1.23E+3 mod 2 | Odd | Even }} Até
Exemplos de variáveis ​​do sistema
Descrição Texto inserido Resultado (para esta página de ajuda)
Nomes de página {{PAGENAME}} Modelo
{{FULLPAGENAME}} Ajuda:Modelo
Nome do namespace atual {{NAMESPACE}} Ajuda
Número de usuários cadastrados {{NUMBEROFUSERS}} 43.353.590
Número de páginas em uma determinada categoria {{PAGESINCATEGORY:"Weird Al" Yankovic albums}} 20
Versão atual do software {{CURRENTVERSION}} 1.39.0-wmf.5 (adb92e7)
Timestamp da última revisão {{REVISIONTIMESTAMP}} 20220105212432

As variáveis ​​e são particularmente úteis e frequentemente usadas para alterar o comportamento do modelo com base no contexto. Por exemplo, se o modelo transcluir um link de categoria (por exemplo, modelos de limpeza, que transcluem um link que categoriza a página como uma página que precisa de limpeza), ele geralmente verifica a variável para garantir que as páginas de discussão, páginas do usuário ou qualquer outro lugar a tag pode acidentalmente ser colocada não são categorizadas como páginas que precisam de limpeza. {{PAGENAME}}{{NAMESPACE}}{{NAMESPACE}}

Modelos de aninhamento

Os modelos podem conter outros modelos - isso geralmente é chamado de aninhamento . À medida que o modelo é processado, o wikitexto produzido por qualquer modelo aninhado é transcluído no modelo aninhado, de modo que o produto final é processado essencialmente a partir do modelo aninhado mais profundo. Embora bastante simples na aplicação, envolve algumas peculiaridades e truques notáveis.

Para passar um valor de parâmetro para um modelo aninhado, coloque uma tag de parâmetro como o valor de um dos parâmetros do modelo aninhado.

Exemplos:
Template:A contém "the quick brown {{B|{{{3}}} }} jumps over..."Isso pega o valor passado para o terceiro parâmetro posicional de Template:A e o passa como o primeiro parâmetro posicional de Template:B, então retorna o wikitexto produzido por B como parte da frase.
Predefinição:A contém "the quick brown {{B|waldo={{{3}}} }} jumps over..."Como anteriormente, exceto que o terceiro parâmetro posicional de Predefinição:A é passado para o parâmetro nomeado "waldo" de Predefinição:B.

Os próprios parâmetros do modelo podem ser escolhidos condicionalmente.

Exemplos:
Predefinição:A contém the quick brown {{B|{{{3}}}=fox}} jumps over...Predefinição:A passa a palavra "raposa" como um parâmetro nomeado de Predefinição:B cujo nome é o terceiro parâmetro posicional de A.
{{#if: test string | value if test string is not empty | {{#if: test string | value if test string is not empty | value if test string is empty (or only white space) }} }}

Um modelo pode chamar a si mesmo, mas parará após uma iteração para evitar um loop infinito.

Quando um modelo aninhado contém chaves sem correspondência — como em — as chaves sem correspondência são tratadas como texto durante o processamento e não afetam a análise de chaves no modelo de aninhamento. Se o modelo aninhado for substituído, no entanto, a substituição será processada primeiro e isso alterará a forma como as chaves são analisadas no modelo de aninhamento. Isso tem pouco uso prático, mas ocasionalmente pode introduzir erros inesperados. {{lb}}}

Veja m:Ajuda:Modelos avançados e m:Ajuda:Conversão recursiva de wikitexto para mais informações. Essas páginas também contêm informações sobre chamadas incomuns, como {{template {{{parameter|}}} }}.

Controle de inclusão: noinclude, includeonly e onlyinclude

Por padrão, quando um modelo é transcluído (ou substituído ), todo o wikitexto (código) da página do modelo é incluído no da página de destino. No entanto, é possível modificar esse comportamento, usando tags que especificam quais partes do código do modelo devem ser incluídas. Isso torna possível evitar a transclusão de informações destinadas a serem exibidas apenas na própria página do modelo, como a documentação do modelo ou categorias . Também é possível que partes do código sejam transcluídas, mas não processadas na própria página de modelo (por exemplo, categorias a serem aplicadas às páginas de destino que não se aplicam ao modelo). As etiquetas são as seguintes:

  • <noinclude>...</noinclude> – O texto entre as tags não será incluído quando o template for transcluído (substituído), mas será processado na página do template; um uso comum é para documentação em modelos .
  • <onlyinclude>...</onlyinclude> – Isso especifica que nada na página, exceto o que aparece entre as tags, será transcluído (substituído).
  • <includeonly>...</includeonly> – O texto entre as tags será transcluído (substituído), mas não será processado na própria página do template.
Wikitexto O que é renderizado aqui (página de origem) O que está transcluído (página de destino)
<noinclude> text1 </noinclude> text2 text1 text2 text2
<onlyinclude> text1 </onlyinclude> text2 text1 text2 text1
<includeonly> text1 </includeonly> text2 text2 text1 text2
<onlyinclude><includeonly> text1 </includeonly></onlyinclude> text2 text2 text1

Talvez o problema mais comum com o uso desses blocos sejam espaços ou linhas indesejados. É importante lembrar que o efeito dessas tags começa imediatamente antes do primeiro colchete angular, não na linha anterior ou no caractere visível anterior; da mesma forma, o efeito termina imediatamente após o último colchete angular, não na próxima linha ou com o próximo caractere visível. Por exemplo:

<includeonly>
}}<incluirsomente>
}}
<includesomente>
<noinclude>
}}<noinclude>
}}
<noinclude>
</includeonly><noinclude>
{{template}}</includeonly><noinclude>
{{template}}</includeonly>
<noinclude>

Essas tags podem ser aninhadas umas dentro das outras, embora (para uma determinada página) isso realmente se aplique apenas à tag; aninhamento e tags é bastante inútil. No entanto, tome cuidado para aninhar corretamente as tags. Construções como abc def ghi não funcionarão como esperado. Use a regra "primeiro aberto, último fechado" que é padrão para HTML/XML. <onlyinclude><includeonly><noinclude><onlyinclude><includeonly></onlyinclude></includeonly>

Problemas e soluções alternativas

  • Se o primeiro caractere produzido por um template ou função de analisador for um dos quatro caracteres de marcação wiki— :, ;, *, #[g] — então ele será processado como se estivesse no início de uma linha, mesmo quando a tag template não estiver. Isso permite a criação de vários tipos de listas em templates onde o template pode nem sempre estar no local correto para uma lista. Para evitar isso, use antes da marcação ou use as entidades HTML , , e respectivamente. Em alguns casos, as entidades HTML funcionarão quando não funcionarem. O problema geralmente ocorre quando um valor de parâmetro em uma chamada de modelo começa com um dos quatro caracteres.<nowiki />&#58;&#59;&#42;&#35;<nowiki />
  • Para questões envolvendo a substituição de modelos, como controlar se os submodelos também são substituídos quando o modelo pai é substituído, consulte Help:Substitution .
  • O modelo pode ser usado para remover qualquer espaço em branco inicial ou final de valores de parâmetros sem nome se isso causar problemas; os valores de parâmetros nomeados são removidos automaticamente dessa maneira.{{Trim}}
  • Para modelos de depuração, às vezes as seguintes técnicas são úteis:
    • Use subst:para substituir um modelo (em vez de transcluí-lo), o que pode mostrar mais claramente o que está acontecendo quando o modelo é transcluído; veja Ajuda:Substituição .
    • Use msgnw:(abreviação de " m e s sage , n o wiki ") para transcluir mais ou menos o wikitexto da página de modelo em vez do conteúdo processado. Não é perfeito: listas são renderizadas, comentários são removidos e novas linhas são substituídas por espaços (o que é particularmente confuso ao transcluir tabelas de wikitexto).
    • Use Special:ExpandTemplates para ver a expansão recursiva completa de um ou mais modelos.
  • Para proteger os recursos do servidor e evitar loops infinitos, o analisador impõe certos limites no aninhamento de transclusão de profundidade e no tamanho da página com modelos expandidos. Isso pode causar a quebra de páginas ao usar modelos muito complexos, principalmente se houver vários modelos na mesma página. Para obter mais informações, consulte limites de WP:Template . A carga geral de uma página no servidor pode ser verificada examinando o HTML gerado para uma página e procurando os NewPP limit reportcomentários.
  • Não use =wikimarkup para criar cabeçalhos de seção dentro de um modelo que se destina ao uso no espaço do artigo; isso criará um [edit]link que, quando transcluído, abrirá de maneira confusa o modelo para edição.
    • Você pode evitar [edit]links para o modelo incluindo <includeonly>__NOEDITSECTION__</includeonly>.

Documentação

Categorizar seu modelo e documentar seu uso adequado facilitará a localização e o uso de outros editores.

A documentação para os usuários, juntamente com as categorias do template, normalmente é colocada após o código do template, dentro de <noinclude>...</noinclude>tags. Normalmente é necessário colocar a <noinclude>tag de abertura imediatamente após o final do código, sem espaços ou quebras de linha, para evitar transcluir espaços em branco indesejados.

No caso de modelos complexos, a documentação (juntamente com as categorias) geralmente é mantida em uma subpágina separada da página do modelo (chamada "Modelo: XXX /doc"). Isso também se aplica a muitos modelos protegidos , o que permite que as informações sejam editadas por não administradores. Isso é feito colocando o modelo após o código do modelo principal e dentro das tags. Se a subpágina "/doc" não existir, aparecerá um link que permite a sua criação. {{Documentation}}<noinclude>...</noinclude>

Categorização

Categorizar páginas por inclusão de modelo

Alguns modelos contêm definições de categoria em seu código transcluído, pois destinam-se a colocar as páginas de destino em categorias específicas. Isso geralmente é feito com categorias de manutenção (colocar artigos em categorias de conteúdo comuns dessa maneira é desencorajado). Ao fazer isso, pode ser necessário usar <includeonly>...</includeonly>tags para manter o próprio modelo fora da categoria. Durante o desenvolvimento, teste, sandboxing ou demonstração de um modelo destinado a aplicar uma categoria, substitua temporariamente cada categoria por uma categoria de teste (começando com X1 , X2 ou X3 ) ou suprima a categorização (consulte supressão de categoria em modelos ).

Categorizar modelos

A declaração de categorização [[Category:Some-topic templates]]deve ser colocada na página de documentação do template (ou dentro de <noinclude>...</noinclude> tags se não houver página de documentação) para evitar poluir as páginas de transclusão.

Apelido

Alias ​​podem ser criados com redirecionamentos . Por exemplo, Template:Tsh redireciona para o atalho Template:Template . Você pode então escrever em vez de . {{tsh|foo}}{{Template shortcut|foo}}

É bom preparar aliases de modelo que diferem apenas em espaços em branco e capitalização. Por exemplo, existe um modelo chamado . O "W" é maiúsculo, já que a palavra "Wikcionário" é assim, mas existe um redirecionamento com "w" menor porque os usuários podem digitar o último. {{See Wiktionary}}{{See wiktionary}}

Limites do modelo

Limite "Pós-expandir incluir tamanho". Quando os modelos são renderizados ou expandidos para HTML para visualização em seu navegador, eles usam memória. Isso é chamado de "tamanho de inclusão pós-expansão" e tem um limite de 2.048.000 bytes. Esse tamanho é incluído como um comentário invisível na saída HTML - use o recurso de fonte de visualização do seu navegador para mostrar o HTML bruto e procure por "newpp". O relatório ficará assim:

<!-- 
NewPP limit report 
Contagem de nós do pré-processador: 2382/1000000 
Tamanho da inclusão pós-expansão: 63476/2048000 bytes 
Tamanho do argumento do modelo: 9517/2048000 bytes Contagem 
cara da função do analisador: 2/500 
-->

O exemplo mostra que a expansão do modelo está usando 63.476 bytes de 2.048.000 bytes de memória disponível.

Problema de exibição. Se muitos modelos forem incluídos em uma página, o tamanho de inclusão pós-expansão poderá exceder o limite. Quando isso acontecer, os modelos após o limite não serão mais expandidos e serão exibidos como um wikilink (por exemplo, Modelo: Nome do modelo ). Causas comuns são a inclusão de muitos modelos de citação e/ou modelos de sinalização. Para resolver esse problema , substitua os modelos, remova os modelos ou divida a página.

As transclusões não renderizadas ainda contam para o limite. Por exemplo, uma página que contém apenas {{#if:{{:Main Page}}}}ainda teria um tamanho de inclusão pós-expansão, mesmo que não tivesse nenhuma saída.

O mesmo se aplica aos módulos Scribunto . Por exemplo, {{#invoke:Test|main}}ainda aumentaria o tamanho da inclusão pós-expansão mesmo se Module:Test fosse simplesmente:

mw . getCurrentFrame (): preprocess  "{{msgnw::Main Page}}"  -- remove esta linha e depois expande include size se torna zero 
return  { main  =  function ()  end }  -- p.main() não tem valor de retorno

Linguagem de programação Lua

Desde fevereiro de 2013, a linguagem de programação Lua está disponível para uso através da extensão Scribunto MediaWiki. Código Lua pode ser embutido em templates empregando a {{#invoke:}}funcionalidade da extensão Scribunto MediaWiki. O código-fonte Lua é armazenado em páginas chamadas módulos, e esses módulos individuais são então invocados em páginas de modelo. Por exemplo, Module:Example pode ser invocado usando o código {{#invoke:Example|hello}}para imprimir o texto "Hello World!".

Pesquisa de modelo

Como alternativa ao uso deste índice vinculado acima, você pode pesquisar o namespace Template usando a caixa Special:Search abaixo:

Veja também

Páginas de ajuda

Páginas de manual do Mediawiki

Páginas especiais

Outras páginas de back-end

Notas

  1. ^ Os namespaces dos quais a transclusão não é permitida são especificados em um wiki pela variável$wgNonincludableNamespaces.
  2. ^ Alguns modelos, como, têm código para exibircomo saída visível; se deve fazê-lo é determinado em uma base de modelo por modelo.{{Requested move}}|reason=
  3. ^ Como o novo wikitexto precisa ser revisado e o novo wikitexto não pode ser visualizado durante a edição do código-fonte, a visualização da página não ilustrará o resultado da substituição do modelo no wikitexto .
  4. ^ Isso não se aplica se o sinal de igual vier dentro de outra chamada de modelo ou outro item que o analisador manipula separadamente.
  5. ^ Novamente, isso não se aplica se vier dentro de outro item analisado separadamente, como um wikilink canalizado.
  6. ^ Para uma versão antiga, a árvore de submodelos será construída de acordo com o estado atual dos modelos.
  7. ^ Estes são definidos nadoBlockLevels função Parser.php .