Condiciones - Oxygenados La comunidad
Oxygenados La comunidad hispana
Recoda White Full Logo
Patrocinador
Menu
post oxygen builder

Condiciones

Condiciones
21 de julio de 2021
Oxigenados Tip del dia

Las condiciones permiten mostrar selectivamente cualquier elemento de Oxygen en base a una condición o conjunto de condiciones, como por ejemplo si un usuario ha iniciado sesión, o si un usuario tiene un determinado rol o capacidad.

Cuando las condiciones de un elemento se evalúan como true (verdaderas), el elemento se muestra. Si las condiciones son false (falsas), el elemento se oculta. Por defecto, todas las condiciones de un elemento deben ser verdaderas para que se muestre, ya que el tipo de condición es por defecto AND. Si cambias el tipo de condición a OR, sólo una de las condiciones debe ser verdadera para que el elemento se muestre.

Para establecer una condición para cualquier elemento, selecciona el elemento y haz clic en el icono de condición en la parte superior del panel de propiedades. Si quieres añadir una condición a un elemento Shortcode, tienes que envolverlo en un Div y añadir la condición al Div.

Entonces se le presentará el menú de condiciones.

Set Conditions

Este botón lanza el Modal de Condiciones, donde puedes establecer las condiciones para este elemento.

Condition Type

Selecciona si la pila de condiciones se evalúa como AND (todas las condiciones deben ser verdaderas) u OR (una condición debe ser verdadera).

In-Editor Behavior

Elegir la visibilidad del elemento en la vista previa del constructor. Elige Always Show para que el elemento sea siempre visible en el constructor. Elige Always Hide para ver cómo es el diseño cuando las condiciones del elemento se evalúan como falsas. Para previsualizar la visibilidad del elemento en función de la evaluación real de sus condiciones, selecciona Show/Hide Based on Conditions.

CONDITIONS MODAL

Al hacer click en Set Conditions lse lanza el Modal de Condiciones, donde se pueden designar las condiciones utilizadas para el elemento. Para empezar, haz click en el botón Add your first condition  la primera condición en el centro del Modal. Ahora, se le presentarán tres campos: Condition, Operator, y Value.

Utiliza el desplegable de la izquierda para elegir tu condición primero. Oxygen incluye una serie de condiciones incorporadas, pero las condiciones registradas a través de la API de Condiciones también aparecerán aquí.

Una vez que hayas elegido una condición, elige un operador en el campo desplegable del medio. Los operadores se utilizan para evaluar algún valor (por ejemplo, el ID de la publicación actual) contra el valor que usted elija. Hay un número de operadores disponibles dependiendo de la condición elegida. Algunos operadores, como contiene o no contiene son abstracciones de las funciones de comparación de cadenas, y funcionan como su nombre indica. Algunas condiciones pueden no necesitar un operador, en cuyo caso el único operador disponible serán dos guiones (--).

Por último, escoge un valor en el campo de la derecha. Este campo puede ser un desplegable, un campo de entrada, o ambos, dependiendo de la condición elegida. Cuando introduzca un valor personalizado, tenga en cuenta el tipo de datos que está comparando. Por ejemplo, no debe utilizar una cadena, o texto, como valor para una condición de Post ID ya que está comparando su valor con un número.

Una vez que se ha configurado una condición en un elemento, se puede ver el icono del indicador de condición junto al nombre de ese elemento en el panel de estructura.

Este icono ayudará a localizar los elementos que puedan estar ocultos por una condición en la vista previa del constructor.

CONDITIONS API

La API de condiciones le permite registrar sus propias condiciones para utilizarlas dentro de Oxygen. Esto puede hacerse desde un plugin personalizado o a través del plugin  Code Snippets o bien, como nosotros recomendamos el Advanced Scripts.

Para empezar, es importante comprobar primero si la función oxygen_vsb_register_condition existe antes de utilizarla.

if( function_exists('oxygen_vsb_register_condition') ) { }

Esto evita los errores que se producirían si Oxygen no estuviera activo y nuestro código siguiera intentando llamar a la función oxygen_vsb_register_condition_function.

A continuación, tenemos que utilizar la función oxygen_vsb_register_condition() para registrar nuestra condición. La función oxygen_vsb_register_condition acepta los siguientes argumentos requeridos:

Condition Name

(string) El nombre de la condición tal y como aparecerá en la lista de condiciones de Oxygen.

Values

(array) La matriz de valores preestablecidos que el usuario puede elegir. Utiliza la tecla de opciones para listar los valores predeterminados. Poner el valor de la clave personalizada en true para permitir a los usuarios introducir valores personalizados. Ejemplo: array('options'=>array('option 1', 'option 2', 'true', 'false'), 'custom'=>true).

Operators

(array) Conjunto de operadores que se pueden utilizar en la condición. Ejemplo: array('==', '!=').

Callback Function

(string) Nombre de la función que se utilizará para manejar la condición.

Condition Category

(string) Nombre de la categoría bajo la cual aparecerá la Condición en el desplegable de Condiciones.

En este ejemplo, registraremos una condición que comprueba el ID de la entrada actual.

if( function_exists('oxygen_vsb_register_condition') ) {

oxygen_vsb_register_condition('Current Post ID', array('options'=>array(), 'custom'=>true), array('==', '!=', '>=', '<=', '>', '<'), 'condition_post_id_callback', 'Post');

}

Como queremos que el usuario introduzca su propio valor personalizado, hemos dejado el array de Opciones vacío y hemos puesto Personalizado en verdadero.

A continuación, simplemente tenemos que crear la función callback para evaluar la condición y devolver true o false en base a la evaluación.

if( function_exists('oxygen_vsb_register_condition') ) {

oxygen_vsb_register_condition('Current Post ID', array('options'=>array(), 'custom'=>true), array('==', '!=', '>=', '<=', '>', '<'), 'ex_condition_post_id_callback', 'Post');

function ex_condition_post_id_callback($value, $operator) {

$current_post_id = get_the_ID();
$value = intval($value);

if ($operator == "==") {
if ($current_post_id == $value) {
return true;
} else {
return false;
}
} else if ($operator == "!=") {
if ($current_post_id != $value) {
return true;
} else {
return false;
}
} else if ($operator == ">=") {
if ($current_post_id >= $value) {
return true;
} else {
return false;
}
} else if ($operator == "<=") {
if ($current_post_id <= $value) {
return true;
} else {
return false;
}
} else if ($operator == ">") {
if ($current_post_id > $value) {
return true;
} else {
return false;
}
} else if ($operator == "<") {
if ($current_post_id < $value) {
return true;
} else {
return false;
}

}

}

}

Nótese que la función acepta dos argumentos: $valor y $operador. Los posibles valores para estos están determinados por los valores establecidos en oxygen_vsb_register_condition, y son elegidos por el usuario. Entonces, los argumentos se pasan a la función y se utilizan para evaluar la condición.

En primer lugar, establecemos una variable con el valor con el que queremos comparar. En este caso, necesitamos saber el ID de la entrada actual, así que establecemos $current_post_id a get_the_ID(). A continuación, nos aseguramos de que el valor introducido por el usuario es un número entero estableciendo $value como intval($value).

Finalmente, establecemos una sentencia if que comprueba el operador que el usuario ha elegido, y evalúa $current_post_id contra $value para determinar el resultado. Tenga en cuenta que la sentencia if necesita acomodar todos los operadores posibles que han sido declarados en la llamada oxygen_vsb_register_condition_call. Necesitamos devolver true si la condición se evalúa como verdadera (.e.g. $current_post_id == $value, si $operator es ==), y devolver false si la condición no es verdadera. Cuando la función de devolución de llamada devuelve true, el elemento que utiliza esta condición será visible. Si la función de devolución de llamada devuelve false, el elemento estará oculto.

Ahora que su condición ha sido registrada, aparecerá en el desplegable de condiciones para cualquier elemento de la página web.

Helper Functions

Para facilitar la creación de condiciones de Oxygen, también hemos incluido algunas funciones y variables de ayuda.

En el ejemplo anterior, podemos sustituir toda la sentencia if devolviendo la función de ayuda eval_int() del objeto global $OxygenConditions.

if( function_exists('oxygen_vsb_register_condition') ) {

oxygen_vsb_register_condition('Current Post ID', array('options'=>array(), 'custom'=>true), array('==', '!=', '>=', '<=', '>', '<'), 'ex_condition_post_id_callback', 'Post');

function ex_condition_post_id_callback($value, $operator) {

$current_post_id = get_the_ID();
$value = intval($value);

global $OxygenConditions;

return $OxygenConditions->eval_int($current_post_id, $value, $operator);

}

}

Si estuviéramos evaluando una cadena, podríamos utilizar la función $OxygenConditions->eval_string(). Para usar cualquiera de las dos funciones, simplemente devuelva la función después de declarar las variables de la condición, y pase el valor con el que estamos comparando ($current_post_id), el valor que el usuario ha elegido ($value), y $operator.

Además, al registrar las condiciones, podemos utilizar la variable global $oxy_condition_operators para insertar rápidamente conjuntos comunes de operadores para usar en nuestra condición.

if( function_exists('oxygen_vsb_register_condition') ) {

global $oxy_condition_operators;

oxygen_vsb_register_condition('Current Post ID', array('options'=>array(), 'custom'=>true), $oxy_condition_operators['int'], 'ex_condition_post_id_callback', 'Post');

function ex_condition_post_id_callback($value, $operator) {

$current_post_id = get_the_ID();
$value = intval($value);
return oxy_condition_eval_int($current_post_id, $value, $operator);

}

}

Primero, debemos hacer que la variable $oxy_condition_operators esté disponible con la línea global $oxy_condition_operators. A continuación, sustituimos nuestro argumento operadores en oxygen_vsb_register_condition() por esta variable, y apuntamos qué conjunto de operadores del array queremos utilizar. Hay tres conjuntos: int, string y simple.

$oxy_condition_operators['int'] = array('==', '!=', '>=', '<=', '>', '<')

$oxy_condition_operators['string'] = array('==','!=','contains','does not contain')

$oxy_condition_operators['simple'] = array('==','!=')

 

 

Última modificación: 25 de junio de 2021

 

 

VOLVER AL LISTADO COMPLETO