Avisos
Vaciar todo

Comportamiento extraño Metamod Pro  

 
Raúl Ramón Val
 Raúl Ramón Val
Noble Member

Tengo una web joomla 2.5, multiidioma y con virtuemart 2.0.24 instalado. El problema lo tengo con Metamod Pro. Utilizo la version pro para eliminar los molestos espacios en blanco que de vez en cuando deja la version gratuita. Hasta ahi todo bien....

La web es: Midinka

A partir de aqui vienen los problemas....tengo una serie de modulos (por ejemplo el modulo Nuestros Artículos) que deseo que aparezcan en determinados momentos de la tienda o-line virtuemart, por ejemplo en el Frontpage, categorias, detalles de productos, busqueda de articulos, sin embargo, no deseo que aparezcan cuando es el carro de la compra, registro etc...de la pagina.

Tengo los modulos asociados al modulo metamod deshabilitados, y el modulo metamod habilitado correctamente y en cada uno de estos modulos una consulta PHP donde digo, en funcion de las consultas condicionales que modulos tengo que visualizar. El problema es el siguiente:

Si activo el plugin METAMOD PRO(de pago), y realizo una busqueda de articulos, por ejemplo LAVADORA, los modulos relacionados(por ejemplo el modulo Nuestros Artículos) no se visualizan en su posicion.

Si desactivo el plugin METAMOD PRO(de pago), y realizo una busqueda de articulos, por ejemplo LAVADORA, los modulos relacionados(por ejemplo el modulo Nuestros Artículos) se visualizan en su posicion.

El codigo php que tengo incluido en el modulo metamod de Nuestros articulos es:

$vm = JomGenius("virtuemart");
if ($language_code=="es") {if ( $vm->check( "pagetype != cart"))
return 383;}
if ($language_code=="en") {if ( $vm->check( "pagetype != cart" ))
return 384;}

Para que podais ver el problema correctamente, voy a utilizar dos webs con la misma configuracion. En la primera web Midinka, el plugin metamod pro esta habilitado, por lo que los modulos Nuestros articulos, informacion de interes, etc...cuando realizo una busqueda...Por ejemplo, la palabra "LAVADORA", no se visualizan cuando realizo la busqueda.

La segunda web Papel o tijera (METAMOD PRO deshabilitado), cuando realizo la busqueda los modulos (nuestros articulos, informacion de interes se mantienen activados correctamente cuando por ejemplo busco la palabra "PAPEL"

RARO RARO RARO

Citar
Respondido : 16/10/2013 11:50 am
Raúl Ramón Val
 Raúl Ramón Val
Noble Member

Por favor, antes de leer este post, leer el anterior para ver al problematica....

Despues del post anterior he estado investigando...y he descubierto algo...pero no funciona...

Necesito tener activado el fitro de paginas, ya que los modulos asociados al modulo metamod no quiero que sean vistos en todas las paginas de la web, solamente en las relacionadas con virtuemart...

He hecho una prueba: He activado que el modulo metamod se vea en todas las paginas. En ese momento, las sentencias de php de metamod funcionan perfectamente, y los modulos se ven en las paginas configuradas en php de forma correcta....perooooooooooooo....al tener seleccionadas todas las opciones del menu me las visualiza en todas las paginas...Si selecciono solo las paginas seleccionadas y deselecciono en las que no deseo que aparezcan ya no funciona la sentencia php del metamod

Alguna sugerencia?????

ResponderCitar
Respondido : 16/10/2013 1:29 pm

Gestor de Contraseñas - VPN Conexión Segura - Gestor 2FA (Segundo Factor de Autenticación

Pablo Velasco
 Pablo Velasco
Illustrious Member

Hola,

Lo más probable es que el problema esté en que al realizar la búsqueda se pierde el itemid de la página, es decir, el id del elemento de menú. Al no tener un elemento de menú asociado el módulo no se carga si lo has asignado para la tienda. Para arreglar esto habría que aplicar cambios en el código de Virtuemart, lo que no es muy recomendable.

Podrías utilizar un truco para tratar de resolver esto. Lo que tienes que hacer es editar el módulo Metamod Pro. Dentro del apartado Menú Asignado, en el parámetro Módulo Asignado en lugar de elegir "En todas las páginas" o "Solo en las páginas seleccionadas" elige la opción "En todas las páginas excepto en las seleccionadas".

En la selección de elementos de menú elige todos los elementos de menú donde no quieres mostrar estos módulos. Es decir, sería una selección contraria a la que tenías cuando habías elegido la opción "Solo en las páginas seleccionadas". De esta forma, si no hay itemid sí que se cargarán los módulos.

Otra solución pasaría por poner en las condiciones del Metamod que el componente que se está cargando el Virtuemart. Cualquiera de las 2 serviría.

ResponderCitar
Respondido : 16/10/2013 3:56 pm
Raúl Ramón Val
 Raúl Ramón Val
Noble Member

Gracias Pablo, creo que vamos bien encaminados, pero no se porque estraño motivo sigue sin funcionar...
Adjunto un fichero con la configurancion de nuestros articulos en midinka

Como puedes comprobar si realizas una busqueda no carga el formulario cuando deberia hacerlo...

Puedes buscar lavadora y veras como no carga el modulo...

En cuanto el segundo metodo que me comentas no lo entiedo muy bien como decirle a metamod que el modulo que utilizamos es virtuemart...No se como indicarselo

ResponderCitar
Respondido : 16/10/2013 5:13 pm

Pablo Velasco
 Pablo Velasco
Illustrious Member

Hola,

En tal caso es posible que cuando cargue una página sin itemid lo asocie a la página de inicio. A modo de prueba marca el elemento de menú Inicio en el módulo Metamod y comprueba si así se muestran los módulos al realizar la búsqueda.

De ser así tendrás que optar por la segunda opción. Es decir, tendrías que dejar el módulo publicado para todas las páginas y en las condiciones php del módulo añadir una condición para que solo se cargue cuando esté en la tienda.

ResponderCitar
Respondido : 16/10/2013 5:27 pm
Raúl Ramón Val
 Raúl Ramón Val
Noble Member

He configurado tal y como me has dicho, pero algo debo de hacer mal ya que he seleccionado todas las paginas y luego he realizado el siguiente codigo php

$vm = JomGenius("virtuemart");
if ($language_code=="es") {if ( $vm->check( "pagetype = frontpage,category,productdetails,shop.search"))
return 383;}
if ($language_code=="en") {if ( $vm->check( "pagetype != shop.cart" ))
return 384;}

y nada...visualiza el modulo en la pagina inicial(creo que es frontpage) y en productdetails, pero no funciona en category ni en shop.search. Quizas haya puesto mal la condicion php para virtuemart....

ResponderCitar
Respondido : 16/10/2013 5:50 pm

Cursos Gratuitos WordPress

Pablo Velasco
 Pablo Velasco
Illustrious Member

Hola,

No te recomiendo hacer el filtro por el pagetype ya que seguro que te dejarás opciones por incluir. Tendrías que comprobar que se esté cargando el Virtuemart. Sería algo como lo siguiente:

if ($language_code=="es") {if ( $vm->check( "pagetype != cart") && $option == 'com_virtuemart')
return 383;}

No he probado el código y no se seguro si es así. Revisa la documentación del módulo para confirmarlo.

ResponderCitar
Respondido : 16/10/2013 5:57 pm
Raúl Ramón Val
 Raúl Ramón Val
Noble Member

Funciona así Pablo, este es el camino correcto. Ahora se me presenta el problema de que hay paginas que aparece el modulo y no debería aparecer. Imagino que es porque no las identifico bien..

Por ejemplo, si selecciono Crear cuenta arrbia a la derecha de la web visualiza el modulo, o por ejemplo si seleccionamos mis pedidos, mi cuenta del menu mi cuenta. Creo que es porque no los nombro bien. He hecho lo siguente:

$vm = JomGenius("virtuemart");
if ($language_code=="es") {if ( !$vm->check( "pagetype = cart,shop.registration,account.order_details,account.orders") && $option=='com_virtuemart')
return 383;}

Pero sigue saliendo el modulo en esas paginas

ResponderCitar
Respondido : 16/10/2013 6:23 pm

optimiza-automaticamente-todas-las-imagenes-de-tu-wordpress

Jhon
 Jhon
Soporte CMS Webempresa Moderator

Hola Raúl

Lo que has colocado en código no creo que sea un sentencia válida, indíquenos de donde te guiaste, me refiero a :

 !$vm->check( "pagetype = cart,shop.registration,account.order_details,account.orders") 

Deberías usar algo como ( para el cart y el shop) , es decir no separarlos por comas sino colocar la comparación explicitamente.

$vm->check( "pagetype != cart") && $vm->check( "pagetype != shop.registration")

Sin embargo lo más recomendable es que ocultes el módulo a través de los ítems de menú, es decir si tienes ítems de menú que hacen ya referencia a estas pantallas usa la funcionalidad de Joomla

Saludos.

ResponderCitar
Respondido : 16/10/2013 8:16 pm
Raúl Ramón Val
 Raúl Ramón Val
Noble Member

Hola Jhon, el codigo lo he sacado de la pagina de metamod...pero esta claro que no funciona...

El tema es el siguiente, hemos estado toda la tarde con Pablo intenando arreglar el problema y al final hemos llegado a la conclusion de que para que funcione hay que publicar el modulo en todas las paginas y luego filtrar en el codigo php de metamod y en esas estamos...

Con el codigo siguiente hemos conseguido que el modulo sea visible en todas las posiciones de virtuemart(evitando que aparezca en el resto de paginas no necesarias) salvo en el carro de compra.
Sin embargo, necesito evitar que aparezca en otras paginas como el registro, los pedidos del cliente, etc..

$vm = JomGenius("virtuemart");
if ($language_code=="es") {if ( $vm->check( "pagetype != cart") && $option == 'com_virtuemart')
return 383;}

.He probado la siguiente instruccion pero no funciona.

$vm = JomGenius("virtuemart");
if ($language_code=="es") {if ( $vm->check( "pagetype != cart") && $vm->check( "pagetype != shop.registration") && $option == 'com_virtuemart')
return 383;}

Necesito evitar que aparezca en el registro, en detalles de cuenta, es decir en los menus que aparecen en mi cuenta pero no veo que instrucciones pueden funcionar....

$vm = JomGenius("virtuemart");
if ($language_code=="es") {
$vm->check("pagetype != cart") && $vm->check( "pagetype != shop.registration") && ($option == 'com_virtuemart')
return 383;}

ResponderCitar
Respondido : 16/10/2013 8:58 pm

wpdoctor-revisa-la-salud-de-tu-wordpress

Jhon
 Jhon
Soporte CMS Webempresa Moderator

Hola Raúl

El código que puesiste puedes enviar el link de la documentación?

Creo que podrías probar con :


$vm = JomGenius("virtuemart");

if ($language_code=="es" &&  $vm->check( "pagetype != cart") && $vm->check( "pagetype != shop.registration") && $option == 'com_virtuemart'){
return 383;
}

Es decir en el anterior código tienes errores de sintaxis

Saludos.

ResponderCitar
Respondido : 16/10/2013 10:12 pm