Hace poco salió la versión beta de JoomFish 2.0. Este componente nos permite tener nuestro sitio multilenguaje en Joomla de una manera sencilla y ordenada. Aún siendo una versión beta es para mí con diferencia la mejor alternativa para crear sitios multilenguaje en Joomla 1.5.
Esta versión viene programada nativamente para Joomla 1.5, por lo que no hará falta activar el modo legacy.
Incluye un plugin , un módulo y un componente. El módulo se instala para tener un selector de idiomas . Acuérdate de activarlos, de lo contrario no funcionará.
Lo mejor es instalarlo y ver las opciones, la sencillez es lo mejor que tiene, simplemente tendremos que ir al menú de joomfish en el backend para traducir todas las categorías, articulos, secciones, elementos de menú… todo, nos permite traducir todo, incluso los metadatos , para mejorar el SEO en otros idomas, impresionante.
He probado otras opciones como Joomla! M17n que no me han acabado de convencer, en concreto este último componente te permite crear una sección diferente para cada idioma e ir cambiando de sección según el idioma, pero el Joomla! se vuelve loco cuando reordenas los elementos del menú principal.
Si esta beta me gusta tanto… como será la versión estable?
PD: Últimamente estoy muy ocupado con el trabajo y preparando la ponencia del JoomlaDay 2008 de Madrid que se celebra este sabado, día 19, por lo que no estoy posteando a un ritmo normal, pero pronto escribiré al ritmo de siempre.
Voy a explicar la forma en que hago backups de sitios web hechos con Joomla!.
Para ello no uso ningún componente externo ni nada por el estilo y aunque es posible que exista alguno que facilite la tarea , la verdad que no es nada complicado hacerlo manualmente.
Si quieres hacer los backups diariamente o automatizarlo, entonces si es recomendable buscar algún componente o script que lo haga.
Hacer el backup
Yo lo hago de la siguiente forma:
- Primero haz un backup de la base de datos.
- Entra al phpMyAdmin y selecciona la base de datos del sitio
- Selecciona la opcion exportar :

- Marca las casillas de la imagen :
- Y presiona continuar para que se descargue el fichero sql que contiene la base de datos.
Después ves a la carpeta donde está instalado tu sitio web accediendo por ftp , ssh o como quieras…
- Bájate todo el sitio a tu disco local.
- Una vez bajado a tu disco local, comprime la carpeta de instalación en un zip.
- Ahora coge el zip que acabas de crear y el fichero sql que has generado antes y comprímelo todo en otro zip y ponle de nombre el nombre del sitio seguido de la fecha actual.
Ya tienes el backup.
Restaurar el backup:
- Crea una base de datos con el nombre del sitio web.
- En phpMyAdmin ves a importar , pulsa examinar y selecciona tu script sql.
- Después descomprime el zip con el directorio donde se encuentran los archivos instalados de tu sitio web , crear un directorio en el servidor web y sube el contenido del zip a ese directorio.
Si algunos datos de usuario , contraseña o nombre de la base de datos han cambiado, realiza las modificaciones pertinentes en el archivo configuration.php.
Y ya esta.
Vamos a ver como subir un fichero al servidor usando el API de Joomla!.
La ventaja de usar el API de Joomla! es que internamente comprueba si se esta usando la capa FTP y si esta configurada se usará para subir el fichero.
Primero creamos una vista donde mostraremos un formulario con un input de tipo “file”. El formulario ha de tener enctype=”multipart/form-data” como atributo, de lo contrario, apache no sabrá interpretar los datos recogidos en la variable post como ficheros. El enctype multipart/form-data especifica que vamos a poder enviar tanto texto como ficheros.
Código de la vista
-
-
<form name="registro" id="registro" action="index.php" method="POST" enctype="multipart/form-data" >
-
-
Introduce el fichero :
-
<input type="file" name="fichero" />
-
<input type="submit" value="Subir Fichero" />
-
<input type="hidden" name="option" value="com_aplicacion" />
-
<input type="hidden" name="task" value="subirFichero" />
-
</form>
-
La vista es enviada a un task, en este caso el task se llama subirFichero, así que creamos un método en el controlador con este nombre e introducimos el siguiente código :
(Si no entiendes lo que es un task, vista, etc… hay un tutorial bastante extenso sobre componentes donde se explica)
Código del task
-
-
$file = JRequest::getVar( ‘fichero’, null, ‘files’, ‘array’ );
-
-
jimport(‘joomla.filesystem.file’);
-
-
$mensaje .= "NoSeHaSubido";
-
}
-
if($file[‘error’] || $file[’size’] < 1 ){
-
$mensaje .= " NoExisteFichero";
-
}
-
if( $file[’size’] > 100 ){
-
$mensaje .=" FicheroDemasiadoGrande";
-
}
-
-
if(!JFile::upload($file[‘tmp_name’],"/directorioLocal".DS. $file[‘name’])){
-
-
$mensaje .= " ErrorAlSubirElFichero";
-
}
-
En la primera línea obtenemos el fichero de la petición proveniente del formulario. Investiga más sobre los métodos de JRequest , te será muy útil!!.
La segunda línea sirve para importar el objeto JFile que usaremos para introducir el fichero en nuestro sistema de ficheros local.
Por último llevamos a cabo algunas comprobaciones para ver si el fichero es demasiado grande ,demasiado pequeño o si no se ha subido ningún fichero y vamos guardando en una variable el mensaje de error correspondiente, para que después solo haya que invocar el método upload del objeto JFile al cual le pasamos como primer parámetro el fichero temporal que aún se encuentra en la petición y como segundo parámetro la ruta completa en el disco local (incluyendo el nombre del fichero) donde queremos guardar el fichero.
Ya debería de estar fichero correctamente subido en el disco duro del servidor
Hasta ahora habíamos visto como hacer los componentes, tanto la parte de backend, como la de frontend, pero no habíamos visto como crear un paquete instalable para poder compartirlo con todo el mundo que se pueda instalar desde el instalador de extensiones de Joomla!.
Para ello simplemente hay que generar un fichero XML con nombre igual al del componente, en este caso prueba.xml y con un formato específico y comprimirlo todo en un zip. Este zip será el instalable.
Vamos a ver un posible fichero XML para un componente de prueba.

Una de las cosas más importantes en los CMS actuales son los editores wysiwyg, que posibilitan la creación de contenidos sin tener que aprender el lenguaje de marcado html.
Joomla viene con el editor tinyMCE por defecto, aunque permite instalar más editores de terceros.
Vamos a ver cómo usar estos editores en nuestros componentes personalizados, para poder crear aplicaciones que generen contenido en formato html sin la necesidad de conocer este Gracias al api de Joomla, usar este editor en nuestros componentes se hace muy sencillo, para esto han implementado una clase llamada JEditor, la cual tiene todas las propiedades y metodos necesarios pasa interactuar con el editor.
El objeto de la clase JEditor lo obtendremos mediante el método estático getEditor() del objeto JFactory , el cual devuelve una instancia del editor que tiene el usuario actual asignado. El método getEditor devolvera el tipo de editor que este asignado en el backend de Joomla!, por defecto es tinyMCE, aunque existen otros, algunos muy buenos…
Vamos a ver el código necesario…
-
-
<form action="index.php" method="post">
-
<?php
-
$editor =& JFactory::getEditor();
-
?>
-
<input name="option" value="com_tuComponente" type="hidden" />
-
<input name="task" value="guardar" type="hidden" />
-
</form>
-
Pon este código en la vista de tu componente e imprimirá el editor.
El codigo html generado se almacena en un textare con nombre “nombreTextarea”.
En el task guardar puedes hacer lo que quieras con el contenido del textarea, lo más comun almacenarlo en una base de datos.
Vamos a ver los parámetros del método display del objeto JEditor:
display (string $name, string $html, string $width, string $height, int $col, int $row, [boolean $buttons = true], [array $params = array()])
- string $name: nombre del textarea
- string $html: contenido del text area
- string $width: anchura del textarea (px or %)
- int $col: numero de columnas del textarea
- int $row: numero de filas del textarea
- boolean $buttons: si es verdadero los botones del editor se mostrarán
- array $params: array asociativo con los parametros del editor
Sencillo , eh?
