Joomla Publicado por: 2

Recientemente nos hemos encontrado con el problema de que los items de menú no se traducían al cambiar de idioma, hasta que no volvíamos a refrescar la página.

Al parecer cuando se cambia de idioma, el componente de ‘mainmenu‘ carga el resultado de la cache, y después lo escribe, de forma que es la segunda vez que cargamos la página cuando recoge de cache el resultado correcto.

En principio, esto se debería solucionar facilmente, deshabilitando la cache para los módulos ‘mainmenu‘ que tengamos, pero no es así. Sigue sin funcionar.

La solución drástica, es deshabilitar toda la cache de Joomla desde la configuración general, pero de esa manera perdemos demasiado rendimiento. No es una buena solución.

La mejor solución, sería tener un archivo de cache diferente para cada idioma, pero no es una solución sencilla, y lo que hemos encontrado, solo es válido si tenemos el archivo ‘/include/cache/lite.php‘ (al parecer de la versión 1.0 de Joomla). Ver el hilo del foro sobre esto.

Para los que no tenemos ese archivo, y a falta de una solución mejor (si la tienes, puedes compartirla en un comentario), podemos desactivar la cache de los módulos ‘mainmenu’ modificando el archivo ‘\modules\mod_mainmenu\helper.php‘.

Lo único que tenemos que hacer es no utilizar el sistema de cache para llamar al método ‘buildXML’ en las líneas 77 y 78, y llamarlo de forma normal.

Quedaría algo como:

//$cache =& JFactory::getCache('mod_mainmenu');
//$string = $cache->call(array('modMainMenuHelper', 'buildXML'), $params);
$string = modMainMenuHelper::buildXML($params);

Pues nada. Eso es todo.

Esperamos que os sea de ayuda.

2 Comentarios

    1. Administrador Microteching Autor del artículo

      Pues si… solo de releer el post me ha venido dolor de cabeza…
      Gracias por tu comentario. Nos anima seguir publicando…
      Saludos!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.