Problema al traducir un link de menú de K2 con joomFish

Joomla

Patada de joomfish a k2Si estamos trabajando en un portal con K2 y JoomFish, es fácil que nos ocurra que no funcionan bien los links de los menús del tipo ‘categoría de K2’ o similar.
Si vamos al administrador de traducciones de joomfish y vemos las traducciones de esos ítems de menú, veremos que están incompletos.
Lo peor es que aunque le demos a copiar y guardemos, vemos que el link sigue mal traducido.

Para arreglar esto tenemos que aplicar la solución encontrada aquí.

Básicamente se trata de:

1. Ir a la ruta “administrator/components/com_joomfish/contentelements”
2. Editar el archivo “menu.xml” (haz copia)
3. Sustituir esto: <field type=»readonlytext» translate=»1″  posthandler=»saveUrlParams» prehandler=»checkUrlType»>Link</field>
4. Por esto: <field type=»text» length=»100″ maxlength=»255″ translate=»1″>Link</field>

Una vez hecho esto, ya podemos ir al administrador de traducciones, y editar todos los items de menú para ahora sí, poder copiar la url original y guardar sin problemas.

Si además, tenemos el sh404sef activado puede que sigamos teniendo problemas.
En este caso, solo tenemos que ir al panel de control de sh, y en la opción “Enable URL optimization” ponemos NO.
Aunque parezca que no tiene sentido, el resultado es muy satisfactorio. Se mantienen las url’s optimizadas.

Error 500 No valid database connection Joomfish Joomla

Joomla

Nos hemos encontrado con un error en el componente Joomfish! (error ya analizado por sus desarrolladores) en el que al entrar daba un error 500 (en cualquier página).

La solución mas extendida es cambiar en la configuración global de Joomla el valor tipo de base de datos de Configuración de la base de datos de mysql a mysqli. Esto no seria una mala opción, pero depende del hosting donde se albergue, pues a veces hemos migrado de un hosting a otro y la opción mysqli no funcionaba porque el hosting no tenia habilitada esa opción.

Una solución que proponen aquí es cambiar el plugin que provoca ese error (system – jfdatabase). Este plugin esta en /plugins/system/jfdatabase/. Los archivos son intercept.jfdatabasemysqli.php (linea 102 aproximadamente) y intercept.jfdatabasemysql.php (linea 160 aproximadamente). Para ello, buscamos el siguiente código en ambos:

// only needed for selects at present - possibly add for inserts/updates later
if (strpos(strtoupper($tempsql),"SELECT")===false) {
$pfunc = $this->_profile($pfunc);
return;
}

y lo cambiamos por:

//Here we don't try to convert a query if it does not start with select (uppercase or lowercase)
//and we are nice with developers in case of they added some extra spaces at the begin of their query.
if (!preg_match('#^ *select#i',$tempsql)) {
$pfunc = $this->_profile($pfunc);
return;
}

A nosotros de momento nos lo ha solucionado. Si sabéis alguna otra opción para corregir este bug (repito, en algunos hostings no se reproduce el error pero en otros si) dejar un comentario y os lo agradeceremos.

Problema con el cambio de idioma en los menus con Joomfish y la cache de Joomla activada

Joomla

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.