Marcação Condicional
Usando a diretiva (:if:)
A diretiva (:if:) A diretiva if permite que partes de uma página sejam incluidas ou excluidas da renderização. As formas genéricas da diretiva (:if:) são:
(:if cond param:) texto (:ifend:)
(:if cond param:) texto (:else:) texto (:ifend:)
(:if cond param:) texto (:elseif cond param:) texto (:ifend:)
Onde "cond" é uma condição à ser testada, e "param" é um parâmetro ou outro argumento da condição.
Note que (:if:) sem parâmetros e (:ifend:) sõ identicos. Note também que (:if cond:) fecha automaticamente uma condição prévia. Para aninhamento em múltiplos níveis, veja Condições aninhadas.
Condições embutidas
As condições embutidas incluem:
(:if name PAGENAME:)
 | - | Página atual tem o nome "PAGENAME"
 | 
(:if group GROUPNAME:)
 | - | Grupo atual tem nome "GROUPNAME"
 | 
(:if auth LEVEL PAGENAME:)
 | - | usuário está autorizado - significa "o que é permitido que o usuário faça" - corresponde a "LEVEL" onde LEVEL pode ser: read, edit, upload, attr ou admin; PAGENAME é opcional.
 | 
(:if authid:)
 | - | Usuário atual esta autenticado - significa que eles provaram quem são ataravés do login - para usar essa capacidade é necessário o uso da receita AuthUser? ou outras que usem a variável $AuthId .
 | 
(:if enabled InvalidLogin:)
 | - | usuário e senha não foram atenticados. É necessário o uso da receita AuthUser. | 
(:if true:)
 | - | sempre irá incluir o texto | 
(:if false:)
 | - | sempre irá excluir o texto (mesmo que comentário) | 
(:if attachments:)
 | - | A Página tual tem um ou mais arquivos anexados
 Se usado na barra lateral, cabeçalho, ou rodapé a condição será aplicada somente a página principal.  | 
(:if date DATA VALOR:)
 | - | DATE pode ser  ano-mês.  ano-mês-dia é opcional.  
Avaliado com verdadeiro se   | 
(:if date DATA.. VALOR:)
 | - | verdadeiro se VALOR (ou data atual se omitida) é DATA or later (unlimited)
 | 
(:if date ..DATA VALOR:)
 | - | verdadeiro se VALOR (ou data atual se omitida) é DATA or earlier (unlimited)
 | 
(:if date DATA1..DATA2 VALOR:)
 | - | verdadeiro se VALOR (ou data atual, se omitida) está no intervalo DATA1 até DATA2 (inclusivamente) 
datas estão em standard formato yyyy-mm-dd ou yyyymmdd ou yyyymmddThhmm (note o "T" entre a data e a hora, e também veja o comentário acima sobre a formatação de  VALOR).
  | 
(:if enabled VAR:)
 | - | verdadeiro se variável do PHP (VAR) for verdadeiro | 
(:if enabled AuthPw:)
 | - | verdadeiro se o usuário enviu sua senha durante a sessão atual.
 - Isso não significa que o usuário enviou a senha correta, mas sim que ele enviou uma senha qualquer.  | 
(:if equal STRING1 STRING2:)
 | - | verdadeiro se STRING1 é igual a STRING2, use aspas se a string ou variavel contém espaços, e.g. "MINHA STRING"
 | 
(:if match REG_EXPRESSION:)
 | - | verdadeiro se o nome da página atual corresponde à expressão regular | 
(:if exists PAGENAME:)
 | - | verdadeiro se a página pagename existe | 
(:if ontrail WikiTrailPage ThisPage:)
 | - | verdadeiro se ThisPage está numa lista usada como trail em WikiTrailPage | 
Os condicionais nome e grupo funcionarão mesmo para uma página incluída, como o "nome" e "grupo" condicionais sempre verificar a página exibida atualmente, em oposição a página que a marcação aparece dentro.
Nota : Although there is no built-in conditional markup to test ?action=, you can use (:if equal {$Action} AÇÃO:) to test what the current action being requested is. Nota: não há marcação condicional embutida para testar qual é a "?action=" atual. Embora seja possível usar (:if equal {$Action} AÇÃO:) para testar qual a ação atual está sendo solicitada. 
Condicionais negativadas
Condicionais negativadas também funcionam:
(:if !attachments:)
 | - | Esta página não possui anexos | 
(:if ! name PAGENAME:)
 | Página atual não é "PAGENAME"
 | |
(:if name -PAGENAME :)
 | ||
Aninhando condicionais
Note que (:if cond:) automaticamente fecha uma condional prévia. Assim, os dois exemplos a seguir tem o mesmo significado:
(:if cond1:) cond1 é verdadeira (:if cond2:) cond2 é verdadeira (:ifend:)(:if cond1:) cond1 é verdadeira (:ifend:)(:if cond2:) cond2 é verdadeira (:ifend:)
Condicionais podem ser aninhadas desde a versão 2.2.beta 66. Para aninhar condionais você precisa numerar os IFs, and ELSE/IFEND correspondentes:
(:if cond1:)
  cond1 é verdadeira
  (:if2 cond2:)
     cond1 e cond2 são verdadeiras
  (:else2:)
     cond1  é verdadeira, cond2 não é
  (:if2end:)
(:else:)
  cond1 é falsa, cond2 teste foi ignorado
(:ifend:)
espaços foram adicionados para uma melhor leitura.
Usando coringas para cobrir espaços
O caractere * pode ser usado como um curinga para representar qualquer personagem, zero, um ou mais vezes. O caractere ? pode ser usado como um curinga para representar qualquer caractere exatamente uma vez. Os caracteres curinga ( * e ? ) podem ser usados com as condicionais de nome e grupo, assim:
(:if name PmCal.2005* :)
 | - | página atual está no grupo PmCal e inicie com 2005 | 
(:if group PmWiki* :)
 | - | Página atual está no grupo PmWiki ou um começando com PmWiki | 
(:if name Profiles.*,-Profiles.Profiles :)
 | - | A página atual está no grupo Profiles mas não em Profiles.Profiles
 | 
Usando Page Text Variables?, Page Variables? e Markup Expressions?
Variáveis de Texto da Página -> Page text variables (PTVs), variáveis de página -> page variables (PVs) e expressões de marcação-> markup expressions podem ser usadas em conditionais. Estes serão atribuidos/avaliados antes das condicionais.
Combinando condicionais
Condicionais (como previamente definido) podem ser combinadas para formar expressões condicionais mais complexas usando uma das três formas equivalentes:
(:if expr EXPRESSÃO :) (:if [ EXPRESSÃO ] :) (:if ( EXPRESSÃO ) :)
As condições são combinadas em expressões com operadores booleanos e parênteses.Na tabela ao lado, A e B são condições regulares ou sub-expressões entre colchetes de condições regulares:
| Expression | Operator | Result | 
|---|---|---|
A and B | And | TRUE se ambos A e B são TRUE. | 
A or B | Or | TRUE se ambos A ou B são TRUE. | 
A xor B | Xor | TRUE se ambos A ou B é TRUE, mas não ambos. | 
! A | Not | TRUE se A não é TRUE. | 
A && B | And | TRUE se ambos A e B são TRUE. | 
A || B | Or | TRUE se ambos A ou B são TRUE. | 
Exemplo
(:if [ name SomePage and group SomeGroup ]:) equivalent to (:if name SomeGroup.SomePage:)
Notas Importantes:
- Espaços são necessários no início e fim de operadores e parênteses.
 - Nenhum aviso é dado para erros de sintaxe or unbalanced brackets.
 - Use parênteses para expressões aninhadas.
 
Assim, o que se segue é uma maneira válida de se construir uma expressão que mostra o seguinte conteúdo somente quando o usuário é o administrador, ou está conectado e o tempo é mais tarde que data indicada:
(:if [ auth admin || ( authid && date 2006-06-01.. ) ] :)
Aninhamento com colchetes falharão silenciosamente:
(:if [ auth admin || [ authid && date 2006-06-01 ] ] :)    NOTA: Não funciona!
Um uso comum destes testes complexos para expressões como:
(:if expr auth admin || auth attr || auth edit :)
[[Logout -> {$Name}?action=logout]]
(:ifend:)
que fornecem um link de logout(saida) só quando o usuário tem permissões parar admin, attr, ou edit.
administradores (avançado)
Criando novas condicionais
Veja +.
Veja também referências especiais para o uso de {*$Variáveis}.
 
Essa é possivelmente a tradução do original em : PmWiki.ConditionalMarkup - Lacak Balik
Essa tradução se encontra em : PmWikiPtBr.ConditionalMarkup - Lacak Balik
Últimas modificações da tradução feitas em :  2011-09-10, pukul 23.00 WIB 
Últimas modificações feitas no original em :  2025-01-18, pukul 08.27 WIB 
