Avisos
Vaciar todo

[Resuelto] Activar o desactivar un módulo de Divi en función de una variable  

 
Gabriel
 Gabriel
Reputable Member
Hola!!, tengo un problema que no sé cómo resolver, a ver si podéis ayudarme:
Uso Polylang con Divi para español/inglés. Polylang sólo me permite identificar 3 tipos de menú (Principal, Secundario e Inferior). El caso es que ya uso los 3 menús en mi web y además para dispositivos móviles uso un menú principal distinto del de ordenador. Todo haciendo uso del Theme Builder.
Polylang no me permite poder identificarlo por lo que en dispositivos móviles sólo se muestra el menú en español.
He estado pensando en aplicar la nueva opción de condiciones sobre el módulo de menú de forma que active el módulo del menú en español o el módulo del menú en inglés según cual sea el idioma seleccionado pero no me permite preguntar por la variable que lo identifica. Sería algo así:
if(pll_current_language()=='en'){
//activaría el módulo del menú en español
}
Para usar la opción de condiciones del módulo de Divi quizás podría hacerlo mediante una cookie pero no se cómo. ¿Alguna idea de cómo puedo resolverlo?, ya sea con cookie o de otra forma.
Gracias

Captura

 

Contenido solo visible a usuarios registrados

Respondido : 20/01/2022 6:22 pm
Karen Rios
 Karen Rios
Soporte CMS Webempresa Moderator

Hola Gabriel, 

Disculpa si no comprendo bien la consulta, que tipo de modulo deseas activar de acuerdo al módulo seleccionado. Ten en cuenta que el menú se mostrara de acuerdo a la selección que realice el usuario, por lo que no comprendo muy bien cuál es el modulo de Divi que deseas se muestre según el idioma

Si es posible indícanos más detalles sobre este módulo, de esta forma podemos verífica con mayor detalle lo que nos comentas

Un Saludo 

Respondido : 20/01/2022 6:40 pm

Gabriel
 Gabriel
Reputable Member

@karen Sí, intento explicarme mejor: la idea es que como no puedo asignar mediante las opciones de Polylang el menú para móvil lo que estoy pensando es mostrar para los móviles un módulo con el menú en español u otro con el menú en ingles en función del valor de la pll_current_language()

image

Gracias

Respondido : 20/01/2022 6:53 pm
Karen Rios
 Karen Rios
Soporte CMS Webempresa Moderator

Hola Gabriel, 

Entiendo, según veo polylang te permite asignar el menú secundario según el idioma por lo que entiendo que con ello puedes controlar que menú se muestra en un lenguaje o no, 

Screenshot (80)

Disculpa si aun no me queda muy claro lo que deseas realizar

Un Saludo 

Respondido : 20/01/2022 7:09 pm

Gabriel
 Gabriel
Reputable Member

@karen Sí, efectivamente, ya lo hago, lo que ocurre es que ya estoy usando el menú principal, el secundario y el inferior, necesitaría otro pero sólo hay 3 menús, de ahí el problema 

image

Por eso me estoy planterando hacer una función que active/desactive el módulo de menú español/inglés en función de la variable pll_current_language(). Gracias

Respondido : 20/01/2022 7:34 pm
Karen Rios
 Karen Rios
Soporte CMS Webempresa Moderator

Hola Gabriel, 

Entiendo, en este caso es posible necesites desarrollar un código a la medida que te permita añadir nuevos menús y mostrarlos en la posición que necesitas, por ejemplo -> Contenido solo visible a usuarios registrados

Otra opción como mencionas es añadir dentro de este bloque de menú una clase en la sección donde añades el módulo, por ejemplo .menu-es o .menu-en de modo que te permita indicar que bloque se muestra según el idioma, ten en cuenta que debes añadir ambas clases según deseas se muestre, sería algo como:

 if(pll_current_language()=='en'){
.menu-es {
 display: none;
}
}

if(pll_current_language()=='es'){
.menu-en {
 display: none;
}
}

Realiza una prueba y comprueba si con ello logras configurar lo que deseas

Un Saludo

 

Respondido : 20/01/2022 8:00 pm

Gabriel
 Gabriel
Reputable Member

@karen muchas gracias. Hay algo que estoy haciendo mal:

He creado 2 módulos de menú para la versión móvil. En el primero que tiene asignado el menú en español le he asignado la "Clase CSS" menu-es y en el segundo que tiene el menú en inglés la clase menu-en.

image

Después he intentado incluir en Functions.php el siguiente código:

function es_en() {
if(pll_current_language()=='en'){
.menu-es { display: none; }
}
}

Pero me da error de sintaxis en el punto, algo debo estar poniendo mal!! 

image

Perdón por mi ignorancia, no sé si me podéis ayudar. Gracias

Respondido : 20/01/2022 8:39 pm
Bruno
 Bruno
Soporte CMS Webempresa Moderator

Que tal Gabriel,

Si lo que deseas es mostrar un modulo en un idioma correspondiente y ocultarlo en el otro puedes hacerlo por medio de CSS de una forma sencilla y directa aplicando las siguientes clases con los siguientes estilos

Donde 

.hide-es oculta el contenido en Español
.hide-en oculta el contenido en Ingles

/*En Ingles oculto en Español*/
:lang(en).hide-es {
display: none;
}
/*En Español oculto en Ingles*/
:lang(es).hide-en {
display: none;
}

Le asignas la clase al modulo que corresponda y haces la prueba

Saludos!

Respondido : 20/01/2022 9:35 pm

Gabriel
 Gabriel
Reputable Member

@bruno-vichetti Guau!! Por fin, había estando mirando sobre :lang() pero no sabía que pudiera ser tan simple. Mil gracias!! 😀 

Respondido : 20/01/2022 10:47 pm
Bruno
 Bruno
Soporte CMS Webempresa Moderator

Hola Gabriel,

Nos alegra que te haya funcionado, recuerda que cualquier otra consulta estaremos atentos

Saludos!

Respondido : 20/01/2022 11:00 pm