Mensaje Nº 1 | 4:30 PM
Operadores condicionales : del novato al profi.

Si tú no sabes en absoluto cómo funcionan los operadores condicionales y la información en el Panel de Control es insuficiente pa’ ti, aquí voy a tratar de explicar. ¡No tengas miedo, chico! Es una vaina bastante fácil. ¡Te lo juro por Dios!

Entonces, empecemos con las nociones. Son operadores condicionales los códigos-símbolos especiales que pueden ejecutar secuencias de comandos (scripts). Tú puedes crear una opción completamente nueva en tu sitio, al mismo tiempo no está prevista ésta en el Panel de Control.

Pa’ esto hay que entender y familiarizarse con los componentes del código. Éstos son:

<?if($código$)?> – es una condición (código) que comunica al operador con quién tenemos asuntos y con qué trabajamos. Lo sustituimos en la memoria por una frase «Si hay»;

<?else?> – es un operador que cumplirá todo lo que le ordenes, cuando la condición no corresponde a lo indicado. Lo sustituimos en la memoria por una frase «Si no hay»;

<?endif?> – es fin del operador condicional, lo sustituimos en la memoria por «Fin»;


Ahora examinemos un simple ejemplo que hay en el Panel de Control:

(del Editor de Páginas)

<?if($USER_LOGGED_IN$)?> Hello, $USERNAME$ <?else?> You are GUEST. Please register. <?endif?>

Quiere decir eso en nuestro lindo idioma: «Si hay un usuario autorizado, “¡Bienvenido su login!”, si no hay, “¡Bienvenido, Huésped!” y fin.»

¿Por qué? ¿De dónde? ¡Más concreto!

Eso es lo que hemos utilizado en este código:

Hemos comunicado al operador <?if($código$)?> que nuestra secuencia de comandos está dirigida para saludar al fulano autorizado. En vez de $código$ hemos puesto el siguiente $USER_LOGGED_IN$, o sea, hemos dicho «Si hay autorizado – <?if($USER_LOGGED_IN$)?>». Después viene una información tuya que es accesible sólo a los autorizados. Pero de paso podemos utilizar la condición si ellos no corresponden a los indicados, es decir, en nuestra situación no corresponden Huéspedes. Eso significa que después de la información para los registrados introducimos una información para los huéspedes.

Obtenemos
<?if($USER_LOGGED_IN$)?> Hola, $USERNAME$ <?else?> ¡Hola, Huésped!

Falta cerrar esto con una terminación.
<?if($USER_LOGGED_IN$)?> Hola, $USERNAME$ <?else?> ¡Hola, Huésped! <?endif?>

Así mismo podemos excluir completamente a los huéspedes exponer la información sólo para los registrados. Para esto simplemente no utilizamos “Si no hay”. Obtenemos lo siguiente:

<?if($USER_LOGGED_IN$)?> ¡Qué bueno que te has registrado! <?endif?>

O sea, en este caso la frase «¡Qué bueno que te has registrado!» es vista sólo por aquellos que han entrado con su login.

Cualquier código indicado como funcionante en un módulo, puede servir de condición para el trabajo de los operadores. En nuestro caso (operadores condicionales) podemos examinar los siguientes ejemplos:

Entrada y salida:
<?if($USER_LOGGED_IN$)?> <a href="$LOGOUT_LINK$">SALIDA</a> <?else?> <a href="$LOGIN_LINK$">ENTRADA</a> <?endif?>

Días después del registro:
<?if($USER_LOGGED_IN$)?> ¡Estás con nosotros ya $USER_REG_DAYS$ días! <?else?> Por favor, regístrate. <?endif?>

Etcétera.


Se puede cambiar las condiciones para la secuencia de comandos con ayuda de las posibilidades adicionales que se apoyan por los operadores. Son signos «=», «>», «<». En caso de la necesidad las condiciones igualadas se dividen por una línea vertical. Después del signo se informa al operador a quién está dirigida toda la secuencia de comandos.

<?if($código$='condición')?> Yo lo veo <?else?> Y yo veo esto <?endif?>

o

<?if($código$='condición')?> Lo principal es que yo lo veo <?endif?>

Ejemplo:

<?if($USER$='Amorcito')?> Amorcito, no olvides leer los correos cada día. <?endif?>

Es decir, en las palabras «Si hay logins de los entrantes y entre ellos hay Amorcito (='Amorcito'), se le debe mostrar esto …»

Lo mismo se refiere a los grupos, nombres, sexo, fecha y todo lo que funciona con códigos.
Más ejemplos:

<?if($USER$='Mike' or $USER$='Lola')?> Panchito y Estercita, he aquí un enlace secreto …. <?endif?>

Grupos:
<?if($GROUP_ID$=3 or $GROUP_ID$=4)?> Moderadores y Administradores, todos juntos hagamos clics en la publicidad aquí … <?endif?>

Etc.

Con todo eso los operadores pueden funcionar uno en otro. Ejemplo:

<?if($USER_LOGGED_IN$)?> Hola $USER$! <?if($GROUP_ID$=3 || $GROUP_ID$=4)?> ¡No olvidemos hacer clics en la publicidad! <?endif?> <?else?> Por favor, regístrate. <?endif?>

Es siguiente la secuencia: «Si hay entrantes, bienvenidos, si hay Administradores y Moderadores entre ellos, añadirlos, Hagamos clics en la publicidad, si alguien no ha entrado, le pedimos que se registre y fin.»


Lo más principal es ir pensando bien cómo escribir la secuencia de comandos, qué códigos deben aplicarse y a quién se dirigirán. Se puede escribir cualquier cosa que te guste. uCoz es un sistema MUY flexible que puede sostener todo. ¡Así que manos a la obra!

Y, al fin y al cabo, mini-info:


  • Cuantos <?if($código$)?>, tantos <?endif?>
  • <?else?> es necesario cuando introducimos una información para los que no corresponden a las condiciones, en otros casos no se requiere
  • Se apoyan las condiciones alternativas: or y and (|| y &&)
  • Se apoya la anidación de operadores
  • Se apoya la comparación de las variables una con otra: <?if($VAR1$=$VAR2$)?>
  • En la comparación el texto obligatoriamente debe estar entre comillas: <?if($USER$='Mike') ?>

    Pregunta – respuesta

    Quote
    Durante la creación de páginas nuevas cargadas por medio de FTP, los códigos $SITE_NAME$, $LOGIN_LINK$, $LOGOUT_LINK$ se exponen en forma de un texto, y no sin ninguna intención... ¿Por qué no funcionan?
    $Códigos$ funcionarán SÓLO en las páginas dinámicas, o sea, en aquellas que han sido creadas en el Panel de Control con ayuda de “Crear una página”. En las páginas estáticas cargadas de afuera con la expansión .html, estos $códigos$ no funcionarán.
    Quote
    ¿Cómo se puede crear condiciones alternativas, por ejemplo: pa’l código $GROUP_ID$?
    <?if($GROUP_ID$=5 or ($GROUP_ID$=4 and $USER$='Alex'))?>...<?endif?>
    Quote
    ¿Si hay operadores que permiten a un usuario ver en la lista de categorías sólo aquellas a las cuales éste tiene acceso?
    Es posible configurar esto, pero sólo haciendo tal lista a mano. O sea, ir comprobando un grupo acual y exponer una lista de categorías necesaria.
    Quote
    $GROUP_ID$ no funciona en la plantilla de mini-chat. ¿Por qué?
    Se almacenan en caché los mensajes del chat, por eso es imposible utilizar códigos dinámicamente cambiables en el chat.
    Quote
    Есть код $USER_LOGGED_IN$. ¿Si existe $USER_LOGGED_OUT$?
    Hay que hacer simplemente una negación en la condición <?if(!$USER_LOGGED_IN$)?>


    Algo más:

    Operador condicional o triádico:

    Tiene la forma:

    expresión ? expresión1 : expresión2

    Se utiliza como un if dentro de expresiones.
    Su resultado es: si expresión es no nula, se evalúa y devuelve expresión1. Si expresión es nula, se evalúa y devuelve expresión2.

    Ejemplo:

    mínimo = ( x<y ? x : y );

    El uso de este operador es superfluo, dado que el if ya resuelve la ejecución condicional. Es conveniente, si se emplea, utilizar paréntesis para evitar ambigüedades.


    Y un poquito más:

    Recordemos a este operador ternario (el único en Java), que recibe tres argumentos. Tiene muchas similitudes con el comando if. Se lo comprende mejor con un ejemplo.

    Supongamos que queremos asignar a la variable a el resultado de dividir k entre j, pero si j es cero, no queremos dividir por cero, y nos conformamos con otro resultado. Podemos escribir:

    a = j == 0 ? -1 : k/j;
    El operador se compone de

    <condicion> ? <valor1> : <valor2>
    Si la condición es verdadera, retorna el primer valor, sino devuelve el segundo. La condición se separa del primer valor con un signo ? (interrogación) y se separan los dos valores con un signo : (dos puntos).

    Hubiera sido equivalente a escribir:

    if (j==0)
    a = -1;
    else
    a = k/j;

    Hay que recordar, que el operador no es un comando: se aplica en cualquier expresión compleja que espere una expresión. Se lo puede usar en esos lugares donde se espera una expresión, y no un comando. Sino, es más claro el comando if.


    Las vírgenes tienen muchas navidades pero ninguna Nochebuena.