Algoritmo do uCoz
|
|
ShZlot
Mensagens: 804
Mensagem # 1 |
12:08 PM
2013-08-08
Os templates do sistema têm sua própria linguagem de marcação simples, semelhante à linguagem de programação PHP em alguns dos seus elementos. Esta linguagem ajuda a exibição (processo) ou não exibição (não processo) das partes dos templates, dependendo da verdade ou falsidade de várias condições aplicadas aos valores de variáveis especiais (como $GROUP_ID$). Ela também faz cálculos sobre estas variáveis. Variáveis de template parecido com $VARNAME$, onde VARNAME pode conter apenas letras maiúsculas, números e underline. Cada template tem seu próprio conjunto de variáveis que podem ser usados dentro deste modelo.A linguagem dos templates permite 3 ações principais: - Exibir um valor de variável por meio da entrada dela em qualquer parte do template (mesmo dentro de tags HTML). Exemplo:O endereço da <a href=$HOME_PAGE_LINK$"> do meu site será mostrada (para $HOME_PAGE_LINK$ igual a 'http://meusite.com.br'): O endereço <a href=http://meusite.com.br"> do meu site Uma variável indefinida é considerada vazia.
- Exibir o resultado do cálculo de uma expressão incluída entre colchetes especiais <? e ?>. A expressão pode conter operações matemáticas, operações de comparação e chamadas de funções. Exemplos:3 mais 2 igual a <? 3+2 ?> Exibirá: 3 mais 2 igual a 5 Dentro de 10 anos será <? $YEAR$+10 ?> Exibirá (para $YEAR$ igual a 2013): Dentro de 10 anos será 2023 Seu nome de usuário começa com a letra "<? substr($USERNAME$,0,1) ?>" Exibirá (para $USERNAME$ igual a 'Admin'): Seu nome de usuário começa com a letra "A" Veja abaixo a lista completa de todas as operações e funções possíveis, assim como as regras de cálculo.
- Para realizar o processamento condicional com a ajuda dos operadores condicionais <?if()?> e <?ifnot()?>. A sintaxe dos blocos condicionais é a seguinte:<?if(expressão)?>código_verdadero<?else?>código_falso<?endif?><?ifnot(expressão)?>código_verdadero<?else?>código_falso<?endif?>
- expressão - uma expressão matemática ou lógica (Boolean) que é calculada a fim de determinar a sua verdade (para o bloco <?if()?>) ou falsidade (para o bloco <?ifnot()?>). Veja as regras de cálculo abaixo
- código_verdadeiro - o código do template que será processado em caso de cumprimento da condição, definida pelo operador condicional.
- código_falsidade - o código do template que será processado em caso de não cumprimento da condição, definida pelo operador condicional (pode ser totalmente ausente junto com o operador '<?else?>', se somente verificar a verdade for necessário).
Blocos condicionais podem ser aninhados. Até 10 níveis de aninhamento são permitidos.Exemplos:Você <?if($USER_LOGGED_IN$)?>fez login como "$USERNAME$"<?else?>não logou<?endif?> exibirá (para $USERNAME$ igual a 'Admin'): Você está logado como "Admin" se $USER_LOGGED_IN$ é verdadeiro, caso contrário Você não logou. <?if($USERNAME$=Hacker' ou $USERNAME$=bad_boy' ou substr($USERNAME$,0,4)=anti')?>Te pegamos, $USERNAME$!!!<?endif?> será exebido (tendo substituído $USERNAME$ pelo seu valor): Te pegamos, $USERNAME$!!!, se $USERNAME$ igual a 'Hacker' ou 'bad_boy', ou começa com 'anti'. <?if($POSTS$>50)?>***<?else?><?if($POSTS$>10.0)?>**<?else?>*<?endif?><?endif?> Exibirá '***', se $POSTS$ é maior do que 50, '**', se é maior do que 10 e menor ou igual a 50, e '*', se é menor ou igual a 10. <?if($NUMBER$ % 2=1)?>ímpar<?else?>par<?endif?> Exibirá se o número em $NUMBER$ é par ou ímpar.
Expressões de cálculo:[list=1] Existem 3 tipos de operandos: string (especifica um texto), integer (especifica um número inteiro de -9223372036854775808 a 9223372036854775807) e fracionário (especifica um número fracionário).Os operandos string são especificados como variáveis do template ($USERNAME$) ou constantes dentro de aspas simples ('Constante1') ou duplas ("Constante2"). No caso de ser necessário usar o símbolo de aspas dentro da própria constante, pode ser feito por meio de uma barra invertida ("It\'s all right' será lindo como "It's all right"). A barra invertida em si pode ser exibida também ("grande \\ pequeno" será lido como "grande\pequeno"). A barra invertida não tem efeito de exibição antes de todos os outros caracteres e é exibido junto com o caractere subsequente. Dentro de constantes de string, um colchete de fechamento não é permitido ?>, pois ele será interpretado como um indicador de fim da expressão.Os operandos inteiro podem ser especificados em notação decimal, binário, octal ou sistemas numéricos hexadecimais. Constantes decimais são especificadas como uma sequência de dígitos de 0 a 9 (123, 999999, 3). As constantes binárias começam com o prefixo "0b" (ou "0B"), seguida por uma sequência de dígitos 0 e 1 (0b1000 define o número 8, 0B11111111 define o número 255). As constantes octal começam com o prefixo "0o" (ou "O0"), seguida por dígitos de 0 a 7 (0o200 define o número 128, 0o456 define o número 302). Constantes hexadecimais começam com o prefixo "0x" (ou "0X"), seguido por dígitos de 0 a 9 e letras latinas de A a F, maiúsculas e minúsculas (0x10A define o número 266, 0xffff define o número 65535).Os operandos fracionários são especificados como uma sequência de dígitos de 0 a 9 que contém, necessariamente, um ponto decimal (123,56) ou a letra E que separa o expoente decimal (1.234e6 define o número 1234000, 1E3 define o número 1000, 2e-4 define o 0,0002), ou o valor do número está fora do permitido para operandos inteiros.Todos os operadores descritos abaixo, exceto o descrito separadamente, transformam automaticamente seus operandos para o tipo necessário (a expressão <?"5" + 3?> retorna 8). Ao transformar um valor string em um valor numérico, as regras do item 4 são usadas (ou seja, o resultado será sempre interpretada como fracionário, e alternativos sistemas numéricos não são reconhecidos) e, adicionalmente, o caractere de menos (-) antes do número é reconhecido. A transformação de uma string em um número pára no primeiro caractere inadmissível, espaços à esquerda são ignorados. Operandos inteiros são transformados em uma sequência sem a perda de precisão e sem o uso de frações decimais (<? 1234567890123445678 ?> irá imprimir '1234567890123445678'). Os operandos fracionários são transformados em uma string no formato de ponto flutuante com uma precisão de 15 casa decimais (<? 1234567890123445678,0 ?> irá imprimir '1.23456789012346e+17').Expressões são calculadas levando em conta as prioridades das operações. Uma prioridade pode ser controlada por meio de colchetes (a expressão <?2 * (5 + 3)?> retornará 16). Se os colchetes estão ausentes, a prioridade dos operadores é determinada pela seguinte tabela (na ordem de prioridade decrescente): unary +, unary -, ~, not, !, todas as funções | ** | *, /, % | +, - | =, ==, !=, <=, <, >=, > | & | |, ^ | &&, and | ||, or
|
|
ShZlot
Mensagens: 804
Mensagem # 2 |
12:11 PM
2013-08-08
Uma expressão é considerada falsa se o seu resultado calculado é uma string vazia, a string '0 '(ex. uma string com somente um único dígito 0. Já as strings '4', 'Olá', '00 'ou '0.0' são consideradas verdadeiras), um valor inteiro 0 ou um valor fracionário 0.0. Todos os outros valores são considerados verdadeiros. Operadores aritméticos: +, -, * | Adição aritmética binária, subtração e multiplicação, correspondentemente. Se ambos os operandos são inteiros, o resultado será um inteiro também (não deve estar fora do intervalo de valores inteiros). | unary +, unary - | É equivalente a somar com zero ou subtrair de zero, mas tem uma alta prioridade | / | Divisão aritmética. O resultado é sempre fracionado. | % | Resto da divisão. Operandos são reduzidos a números inteiros. O resultado é sempre um inteiro. | ** | Operação binária exponencial. O primeiro operando (deve ser positivo) é elevado à potência da segunda. O resultado é sempre fracionado. | Operadores de comparação: =, == | Seleção de Igualdade. Se dois operandos são string, então são comparadas levando em consideração maiúsculas e minúsculas (letras maiúsculas e minúsculas são diferenciadas). Se ambos os operandos são inteiros, em seguida, os números inteiros são comparados. Caso contrário, os operandos são comparados como números fracionários. O resultado do operador é o número inteiro 1 se operandos são iguais e 0 se operandos não são iguais. Exemplos: <?if("1.000"="1.0")?> é falsa (são comparados como strings), <?if("1.000"="1.0"+0)?> é verdade (os números são comparados). | != | Seleção de Desigualdade. É semelhante a verificação de igualdade, mas o resultado é o oposto. | <=, <, >=, > | Comparação de dois números. Se ambos os operandos são inteiros os números inteiros são comparados. Caso contrário, os operandos são comparados como números fracionários. O resultado do operando é o número inteiro 1 se a condição é satisfeita, e 0 se a condição não não for satisfeita. | Operadores lógicos: !, não | Operador unário de negação lógica. Se o operando é falso o resultado é o número inteiro 1, caso contrário é 0. | &&, e | Operador lógico binário "E" (multiplicação). Se ambos os operandos forem verdadeiros, o resultado é o número inteiro 1, caso contrário é 0. | ||, ou | Operador lógico binário "OU" (adição). Se algum dos operandos for verdadeiro, o resultado é o número inteiro 1, caso contrário é 0. | Operadores lógicos sempre reduzem operandos a um número inteiro e retornam um resultado inteiro: &, |, ^ | Operadores lógico binário "E" (multiplicação), "OU" (adição) e "OU Exclusivo", correspondentemente | ~ | operador unário de negação bit a bit (inversão). | Funções: int N int(N) | Ele retorna a parte inteira do parâmetro numérico N, obtido por meio do arredondamento para zero. O resultado é sempre um número inteiro. | abs N abs(N) | Ele retorna o valor absoluto (módulo) do parâmetro numérico N. Se o operando é um número inteiro, o resultado será um número inteiro também. Caso contrário, será fracionário. | rnd( ) rnd N rnd(N) | Ele retorna um número aleatório. Se o parâmetro está ausente ou é igual a 0, então um número fracionário de 0 (inclusive) a 1 (não-inclusive) é retornado. Se o parâmetro é inteiro (não igual a 0), então o número um inteiro de 0 a N-1 (inclusive) quando N>0, e um número de N+1 a 0 (inclusive) quando N<0 é retornado. Caso contrário, o parâmetro é reduzido a um número fracionário e é multiplicado por um número aleatório fracionário a partir de 0 (inclusive) a 1 (não-inclusive). Exemplos: <? rnd 10 ?> irá retornar um número inteiro de 0 a 9 (inclusive), <? rnd 10.0 ?> irá retornar um número fracionário 0 a 10 (não-inclusive). | min(A1,A2,...,An) max(A1,A2,...,An) | Ele retorna, correspondentemente, o valor mínimo ou máximo entre os parâmetros numéricos retornados. O resultado é sempre fracionário. | len S len(S) | Ele retorna o comprimento do parâmetro string. O resultado é sempre um inteiro. | strpos(S1,S2) | Ela encontra a primeira ocorrência da string S1 em S2, indo desde o início de S1 até o fim. A comparação difere maiúsculas e minúsculas. Ambos os parâmetros devem ser especificados como strings (ou como resultado de chamar uma função que retorna uma string). A pesquisa é limitada pelos primeiros 1.000 caracteres da string S1. A comparação é limitada pelos primeiros 100 caracteres da string S2. Ele retorna um número inteiro - a posição da string S2 a partir do início do S1, contagem de 0. Se a ocorrência não foi encontrado, ele retorna -1. (<?strpos('Mikyky','ky')?> retornará 2). | strrpos(S1,S2) | É semelhante ao strpros porém encontra a última ocorrência de S2. A pesquisa é limitada aos últimos 1.000 caracteres da string S1. (<?strpos('Mikyky','ky')?> retornará 4). | substr(S,N1,N2) substr(S,N1) | Ele retorna uma substring da string S, a partir da posição N1 (o primeiro caractere tem posição 0), do comprimento igual a caracteres N2. O parâmetro S deve ser especificado como uma string (ou como resultado de chamar uma função que retorna uma string). N1 e N2 são reduzidas a valores inteiros. Se N2 não for especificado, uma substring da posição N1 para o final da string S é retornado. Se N1 é negativa, então a posição inicial é contada a partir do final da string S. Se N2 é negativa, em seguida, ele define a posição final a partir do final da string S. (<?substr('Hello',2)?> retornará 'llo', <?substr('Hello',2,2)?> retornará 'l', <?substr('Hello',-2)?> retornará 'lo', <?substr('Hello',0,-2)?> retornará 'Hel'). |
Lembre-se! Não estamos na sua cabeça, então seja claro ao postar uma dúvida. Não dou suporte por mensagem privada. Quem preferir suporte particular, procure no Painel de Controle do site ou na página http://www.ucoz.com.br/contact.
|
Romanistas
Mensagens: 46
Mensagem # 3 |
6:07 PM
2013-08-26
Salve ShZlot, encontrei um problema para fazer esta solução dar certo:
VALOR=X VALOR2=Y VALOR3=Z
<?<?if($VALOR$='X')?>1<?else?>0<?endif?>+<?if($VALOR2$='Y')?>1<?else?>0<?endif?>+<?if($VALOR3$='Z')?>1<?else?>0<?endif?>?>
Deveria mostrar o somatório destas três funções lógicas QUE SERIA IGUAL A 3, porém não mostra nada no campo. Onde estou errando nesta fórmula?
|
ShZlot
Mensagens: 804
Mensagem # 4 |
6:29 PM
2013-08-26
Olá Romanistas, O sistema não permite criar variáveis, no seu caso $VALOR$ você tem que usar uma variável existente. Todas as regras estão listadas acima. não funciona como PHP ou ASP
Veja um exemplo onde $OTHER1$ é uma variável existente e eu preenchi o campo com valores numéricos no formulário de adicionar nova entrada (postagem)
Suponhamos que $OTHER1$ vale 749 será impresso na página maior que 500 e menor do que 800 Código <?if($OTHER1$<500)?>menor do que 500<?endif?>
<?if($OTHER1$<800)?> <?if($OTHER1$>500)?>maior que 500 e menor do que 800<?endif?> <?endif?>
<?if($OTHER1$<1000)?> <?if($OTHER1$>800)?>maior que 800 e menor do que 1000<?endif?> <?endif?>
<?if($OTHER1$>1000)?>maior que 1000<?endif?>
No caso de somas pode colocar o código abaixo, será impresso 849 (749+100)Código <? $OTHER1$+1000 ?>
Lembre-se! Não estamos na sua cabeça, então seja claro ao postar uma dúvida. Não dou suporte por mensagem privada. Quem preferir suporte particular, procure no Painel de Controle do site ou na página http://www.ucoz.com.br/contact.
|
Romanistas
Mensagens: 46
Mensagem # 5 |
3:19 PM
2013-10-31
ShZlot, esta não foi a pergunta velho, "VALOR$" é uma suposição ilustrativa pra voce entender o problema
Adicionado (2013-08-26, 6:38 PM) --------------------------------------------- Já que você citou uma variável existente, então eu gostaria disto aqui:
$OTHER1$ = X $OTHER2$ = Y $OTHER3$ = Z
<?<?if($OTHER1$='X')?>1<?else?>0<?endif?>+<?if($OTHER2$='Y')?>1<?else?>0<?endif?>+<?if($OTHER3$='Z')?>1<?else?>0<?endif?>?>
o sistema deveria me mostrar resposta 3 (1+1+1), porém ele mostra o campo em branco.
Eu não quero maior/menor e sim "SOMATÓRIO".
grato
Adicionado (2013-10-31, 3:19 PM) ---------------------------------------------
Mensagem editada por Romanistas - Quinta-feira, 2013-10-31, 3:19 PM
|
ShZlot
Mensagens: 804
Mensagem # 6 |
8:43 AM
2013-11-01
Citação Romanistas ( ) Código <?<?if($OTHER1$='X')?>1<?else?>0<?endif?>+<?if($OTHER2$='Y')?>1<?else?>0<?endif?>+<?if($OTHER3$='Z')?>1<?else?>0<?endif?>?>
Não funciona assim.
Se você me explicar como quer usar estes cálculos, talvez haja uma forma alternativa.
Lembre-se! Não estamos na sua cabeça, então seja claro ao postar uma dúvida. Não dou suporte por mensagem privada. Quem preferir suporte particular, procure no Painel de Controle do site ou na página http://www.ucoz.com.br/contact.
|
Zamarian
Mensagens: 17
Mensagem # 7 |
1:42 PM
2014-05-20
Olá!
estou tentando utilizar o chat como um canal online para atendimento a clientes, porém gostaria que o modulo só aparecesse para todos, quando o grupo de administradores do site estivesse logrado. Isto é possível através de blocos condicionais aninhados?
Como seria a codificação, se fosse possível?
Pensei em algo do tipo: <?if($USER_GROUP$=0,1,2,3,4)?> MÓDULO ATIVO <?endif?>
|
MrCazper
Mensagens: 1
Mensagem # 8 |
6:16 AM
2014-05-21
ShZlot, Suas informações são importantes Obrigado por ele
Fórum de usuários assessor Espanhol
|
ShZlot
Mensagens: 804
Mensagem # 9 |
8:06 PM
2014-05-21
Zamarian, do jeito que você quer não tem como.
O que você pode fazer é colocar o chat do módulo Bate-papo em uma página e bloquear o acesso da página para visitantes. Quando você estiver online você libera o acesso.
Existem alternativas como por exemplo o LiveChat. O LiveChat não tem nenhuma relação com o uCoz.
Lembre-se! Não estamos na sua cabeça, então seja claro ao postar uma dúvida. Não dou suporte por mensagem privada. Quem preferir suporte particular, procure no Painel de Controle do site ou na página http://www.ucoz.com.br/contact.
|
Zamarian
Mensagens: 17
Mensagem # 10 |
9:55 PM
2014-10-01
Ok, obrigado. encontrei uma solução assim: http://corretordeseguros.blog.br/solucao.png . Não era como eu queria mas quebra o galho. Gostaria que o chat só aparecesse se realmente os administradores estivessem online.Adicionado (2014-10-01, 9:55 PM) --------------------------------------------- Eu novamente, é possível criar uma função dentro de uma somatória?
Função 1: <?if($OTHER1$='X')?>1<?else?>0<?endif?> Função 2: <?if($OTHER2$='X')?>1<?else?>0<?endif?>
Por exemplo: ( [resposta da função 1] + [resposta da função 2] )
Quero que as respostas das funções virem um somatório
|
ShZlot
Mensagens: 804
Mensagem # 11 |
9:09 AM
2014-10-02
Zamarian, depende de como você está fazendo, pode dá certo, ou não.
Para fazer cálculos com a programação do uCoz, os números devem estar dentro da abertura e fechamento <? abre e ?> fecha. Ex.: <? 10+5 ?> o resultado ,já na página, será 15. O que estiver fora da tag de abertura de fechamento não é possível fazer cálculos com a programação do uCoz.
Porem, ainda sim, você pode fazer cálculos usando Javascript. Código <script> var nA = 10; //número A var nB = 20; //número B
var soma = nA+nB; //soma simples do número A com o número B
alert ('O resultado é '+soma) //Caixa de alerta com o resultado da soma <script>
Código <script> var nA = <?if($OTHER1$='X')?>1<?else?>0<?endif?>; //número A var nB = <?if($OTHER2$='X')?>1<?else?>0<?endif?>; //número B
var soma = nA+nB; //soma simples do número A com o número B
alert ('O resultado é '+soma) //Caixa de alerta com o resultado da soma <script>
Lembre-se! Não estamos na sua cabeça, então seja claro ao postar uma dúvida. Não dou suporte por mensagem privada. Quem preferir suporte particular, procure no Painel de Controle do site ou na página http://www.ucoz.com.br/contact.
|