Jueves, Marzo 18, 2010
   
Text Size

Google AdSearch

 

Joomla!

Acajoom (newsletter)

Pack Newsletter
Añade a Joomla! un potente sistema de suscripción a newsletter para que usted pueda mantener informados a sus clientes.
Nivel: 2
 

Seo KeyWord Link (definir palabras clave enlazadas)

Seo KeyWord Link (definir palabras clave enlazadas)Plugin que nos permite definir las palabras clave / enlace. Las palabras clave serán automáticamente hipervinculadas a los enlaces que le hayamos asociado. Esto es muy útil para mejorar las páginas internas de SEO, dentro de su sitio.

 

Descarga: Web oficial / Joomla extensions

 

Integrar Simple Image Gallery con Joomslide

JoomSlide

Integrar Simple Image Gallery con Joomslide JoomSlide es uno de los mejores plugins para Joomla!.
Gracias a JoomSlide, insertar imágenes en miniatura (thumbs) en nuestros artículos es rápido y sencillo.
Tan solo debemos redimensionar la imagen en el editor html de Joomla! y JoomSlide se encargará de crear la imagen en miniatura y de que cuando los visitantes de la web hagan click sobre ella, vean la imagen a pantalla completa, con un bonito efecto de zoom y muchas otras opciones que podremos parametrizar en las opcions de este plugin.

Descarga: web oficial / Joomla extensions

 


Simple Image Gallery

Simple Image Gallery es otro genial plugin para Joomla! que genera galerias de fotos con solo indicarle la carpeta donde tenemos guardadas la imágenes.

 

Descarga: web oficial Extensiones Joomla!

 



Integración de Simple Image Gallery y JoomSlide

Ambos componentes se usan en distintas situaciones y para distintos fines, pero si utilizamos ambos en nuestra web, veremos como los estilos de las imágenes (márgenes, bordes....) así como los efectos de zoom y proyección son distintos.

A continuación vamos a explicar como modificar el Simple Image Gallery para que utilize los estilos y efectos del JoomSlide para unificar ambos sistemas y mantener la uniformidad en las imágenes de nuestra web.

Para ello vamos a realizar cuatro pasos:

 

  1. El primer paso es, por supuesto, instalar, activar y parametrizar ambos plugins. Los siguientes pasos solo deber realizarse con ambos plugins operativos.
  2. Debemos hacer que los ficheros del JoomSlide se carguen siempre, para que así puedan ser utilizados desde el Simple Image Gallery. Para ello, en la web de administración, accederemos al menú "Extensiones"->"Gestión de plugins", y en los parámetros avanzados del "Content - JoomSlide" activaremos la opción "incluir siempre cabecera"


  3. Ahora deberemos modificar el plugin Simple Image Gallery para que aplique los efectos del JoomSlide en lugar de los suyos.

    Para ello editaremos el fichero /plugins/content/jwsig.php, modificando la linea 119:

    Original:
    $html .= '<div class="sig_cont"><div class="sig_thumb"><a href="'.$mosConfig_live_site.$rootfolder.$_images_dir_.'/'.$images[$a]['filename'].'" rel="lightbox[sig'.$sigcount.']" title="';Modificado:

    $html .= '<div class="sig_cont"><div class="sig_thumb"><a class="highslide" onclick="return hs.expand(this)" href="'.$rootfolder.$_images_dir_.'/'.$images[$a]['filename'].'" title="';
  4. Ahora solo nos falta igualar los estilos de ambos sistemas para que la apariencia de las miniaturas sea igual.
    Los dos ficheros donde se encuentran los estilos son:
    • /plugins/content/plugin_jw_sig/sig.css para el simple gallery 
    • /plugins/content/joomslide/highslide/highslide.css para el joomslide
    La manera mas sencilla suele ser anular los estilos .sig_thumg y .sig_thumb img del simple gallery, con esto conseguiremos que a las imágenes del simple gallery se les apliquen los estilos del JoomSlide, por lo tanto, cuando editemos los estilos del JoomSlide, estos se aplicarán a ambos plugins.   

 

   

Rokweather (meteorologia)

Rokweather (meteorologia)Rokweather es un modulo que nos permite informar sobre la meteorologia en cualquier parte del mundo. El modulo actualiza los datos de la base de datos de google.

En los parametros de configuración podemos elegir varias opciones a mostrar tales como:

  • Temperatura
  • Lluvia
  • Viento
  • Humedad
  • Minimas y maximas 

La caracteristica mas importante que hemos encontrado en este modulo es que utiliza la tecnologia de google para informar sobre la meteorologia de la zona de tal manera que solo tenemos que decirle el nombre del pueblo o ciudad a mostrar, sin necesidad de buscar los "city codes".

 

54°
12°
°F | °C
Clear
Humidity: 72%
Wind: S at 10 mph
Thu

41 | 64
5 | 17
Fri

46 | 68
7 | 20
Sat

46 | 71
7 | 21
Sun

42 | 69
5 | 20

Descarga: web oficial / Joomla extensions

 

Integración de GTranslate en Joom!Fish

EL PROBLEMA

Joomla! es un sistema multilenguaje, y permite la instalación de paquetes de idiomas tanto para la parte pública de nuestra web, como para la parte administrativa. Estos paquetes de idioma incluyen las traducciones de las etiquetas del sistema, por ejemplo los formularios, botones, mensajes, alertas.... sin embargo Joomla! no incorpora ningún sistema para la traducción del contenido, por lo que deberemos instalar extensiones para este fin. Existen dos tipos de traducción:

 

TRADUCCIÓN MANUAL DEL CONTENIDO

Este sistema requiere mucho trabajo por parte de los usuarios, ya que cada artículo que se introduce en el contenido, hay que traducirlo a tantos idiomas como se quieran tener instalados en la web. En contrapartida, este tipo de traducción, beneficia enormemente de cara a la indexación en los buscadores, ya que las traducciones también son indexadas, no solo el idioma original.

Existen diversas extensiones para Joomla! que permiten la traducción manual del contenido, aunque la mas popular es Joom!Fish.

Integración de GTranslate en Joom!FishJoom!Fish es una extensión gratuita para Joomla! que nos permitirá traducir nuestros artículos tanto desde el front como desde el back a tantos idiomas como queramos. También nos permite traducir los menús y los módulos y la mayoria de extensiones tienen compatibilidad con JoomFish!. Cuenta con un buen soporte, una comunidad numerosa, y múltiples complementos.

Descargar Joomfish! 2. ( © Think Network GmbH, Munich)


TRADUCCIÓN AUTOMÁTICA

La alternativa a la traducción manual son los servicios de traducción online que nos ofrecen sitios como Google, Babylon o Altavista. Ya existen multitud de módulos para Joomla! que permiten utilizar estos servicios de traducción automática integrados en nuestra web, sin necesidad de que el usuario instale ningún software adicional ni entra web para realizar la traducción.

Estos sistemas, como todas las traducciones automáticas, no ofrecen resultados perfectos, pero si bastante buenos. Cumplen su finalidad, es decir, que los visitantes de nuestra web puedan entender los contenidos, sea cual sea su idioma. Esta opción es especialmente interesante para los idiomas minoritarios, ya que con los 43 idiomas disponibles en Google Translate se cubre el 98% de los posibles visitantes. La desventaja de este tipo de traducción es que no se indexa en los buscadores y la lentitud, ya que toda página que se traduce tiene que pasar por los servidores de traducción antes de mostrarse. Una de las extensiones mas completas y funcionales Gtranslate.

gtranslateGTranslate es un pequeño módulo para Joomla! que permite traducir nuestra web a 43 idiomas, gracias a la API de Google Translation.
Nos permitirá además varias opciones de presentación.

Descargar GTranslate.(© Edvard Ananyan, Yerevan)

Por lo tanto, ambas soluciones tienen ventajas y desventajas, pero Joomla! no dispone de ningún sistema que permita combinar la traducción manual del contenido de Joom!Fish con las traducciones automáticas de GTranslate.

 

LA SOLUCIÓN: Integración de Joom!Fish y GTranslate

En este artículo explicaremos como, realizando unas sencillas modificaciones en el código de ambas extensiones, podremos realizar una completa integración que nos proporcionará, además de las funcionalidades ya conocidas de estas extensiones, las siguientes ventajas:

  • En la web mostraremos únicamente un módulo traducción de GTranslate (que permite mostrar banderas y desplegable) y no el de Joom!Fish
  • Cuando hagamos click en la bandera de un idioma que tengamos activado en Joom!Fish, se cargará la traducción manual mediante Joom!Fish
  • Cuando seleccionemos un idioma que NO esté activado en Joom!Fish, se cargará la traducción automática mediante GTranslate.
  • Cuando estemos mostrando la web en uno de los idiomas de Joom!Fish, aquellos artículos que hayan sido escritos en el idioma original y todavia no dispongan de traducción en Joom!Fish, se traducirán automáticamente mediante la GTranslate API PHP.
  • Cuando queramos crear la traducción de un artículo, Joomla! nos mostrará el artículo original traducido mediante GTranslate, no en el idioma original, por lo que solo deberemos repasar la traducción y guardarla. 
  • Cuando nos logueamos en el front, las banderas de los idiomas que tengamos instalados en Joom!Fish, pero no activados todavia, nos permiten realizar las traducciones de los artículos a esos idiomas (no conducen a la traducción automática). 

Con todo esto conseguimos nuestros tres grandes objetivos en una única solución:

  • Podremos guardar las traducciones de los contenidos de la web en los idiomas mas importantes mediante Joom!Fish, de esta manera recibiremos mas visitantes de estos idiomas, además de mejorar el rendimiento de nuestra web al no recurrir al traductor externo.
  • Mantenemos la posibilidad de que los visitantes puedan traducir la web entera a todos los demás idiomas mediante la traducción automática de Google.
  • Facilitamos el trabajo de traducción manual.

Vamos a ver los pasos a realizar:

Paso 1: Requisitos previos

  • Joomla 1.5.x  
  • Instalar en Joomla! los paquetes de todos aquellos idiomas de lo que queramos tener traducciones manuales
  • Instalar los mismos paquetes de idiomas para todas las extensiones de terceros instaladas
  • JoomFish! 2, instalado y activado
  • Idiomas los mismos idiomas para JoomFish
  • Gtranslate, instalado y activado
  • Establecer correctamente el mismo idioma predeterminado en Joomla!, Joom!Fish, y GTranslate, de lo contrario el sistema no funcionará correctamente. Si tiene problemas para predeterminar un idioma en Joom!Fish, modifique las opciones del plugin "System - Jfrouter" que encontrará en el menú "Extensiones"->"Gestor de Módulos"de la web de administración.

Paso 2: Instalación de librerias adicionales

Para traducir textos mediante la Api de Google Translate directamente en nuestro código PHP, existe la libreria Google Translate™ API PHP Wrapper.

Descargar Google translate API PHP Wrapper. ( © Jose Da Silva)

Para nuestra modificación vamos a necesitar también la libreria JQuery Minified.

 Descargar  jQuery 1.3.2 (Minified).

Ambas librerias vienen comprimidas dentro de ficheros zip. Para instalarlas descomprimiremos todo el contenido de los ficheros zip en la carpeta /includes de nuestra web Joomla!

 

Paso 3: Configurar los parámetros del módulo GTranslate y ocultar el selector de idioma de Joom!Fish

En la web de administración, accedemos al menú "Extensiones"->"Gestor de Módulos" , y buscaremos el módulo "mod_Gtranslate".

En los parámetros del módulo Gtranslate debemos dejarlo así:

Habilitado: Sí

Nivel de acceso: Público

Look: Both (para que muestre banderas y desplegable)

Todos aquellos idiomas que tengamos instalados en Joom!Fish deberemos mostrarlos como banderas: As a Flag

El módulo de selección de idioma de Joom!Fish, "mod_jflanguageselection", lo deshabilitaremos de manera que en nuestra web el idioma tenga que ser seleccionado con el módulo GTranslate.

 

Paso 4: Modificar el código del módulo GTranslate para que detecte automáticamente los idiomas activados en Joom!Fish:

El fichero a modificar es /modules/mod_gtranslate/tmpl/default.php

Hay que modificar el siguiente código en la línea 78:

Antes:$i = $j = 0;

    foreach($lang_array as $lang => $lang_name) {
        $show_this = 'show_'.str_replace('-', '', $lang);
        if($$show_this == '2'):
            echo '<a href="javascript:doTranslate(\''.$language.'|'.$lang.'\')" title="'.$lang_name.'" class="flag" style="font-size:'.$flag_size.'px;padding:1px 0;background-repeat:no-repeat;background-position:-'.($i*100).'px -'.($j*100).'px;"><img src="'.JURI::root(true).'/modules/mod_gtranslate/tmpl/lang/blank.png" height="'.$flag_size.'" width="'.$flag_size.'" style="border:0;vertical-align:top;" alt="'.$lang_name.'" /></a> ';
        endif;

        if($i == 7) {
            $i = 0;
            $j++;
        } else {
            $i++;
        }

}
Después:

$i = $j = 0;


    $jfManager = JoomFishManager::getInstance();
    $langActive = $jfManager->getActiveLanguages();
    $cont = 0;
    foreach ($langActive as $idioma => $nombre){
          $jfArrayIdiomas[$cont] = substr($idioma,0,2);
          $cont++;
    }   

  /*this is the jquery path*/
   echo '<script src="/includes/jquery-1.3.2.js">jQuery.noConflict();</script>';
       
    foreach($lang_array as $lang => $lang_name) {
        $show_this = 'show_'.str_replace('-', '', $lang);
        if($$show_this == '2'):
        $coincide = false;
        foreach ($jfArrayIdiomas as $idiomaJoomfish)
        {
            if ($idiomaJoomfish == $lang)
                {
                    $coincide = true;
                    break;
                }
        }
        if ($coincide)
        {
        if($_SERVER['REQUEST_URI']=="/") $newurl="$idiomaJoomfish";
        else
        $newurl=str_replace(substr($_SERVER['REQUEST_URI'], 1, 2),$idiomaJoomfish,$_SERVER['REQUEST_URI']);
            echo '<script>jQuery(document).ready(function(){jQuery("#notraducir'.$idiomaJoomfish.'").attr("href","'.$newurl.'");});</script>';

            echo '<span class="notranslate"><a id="notraducir'.$idiomaJoomfish.'" href="/" style="font-size:'.$flag_size.'px;padding:1px 0;background:url(\'modules/mod_gtranslate/tmpl/lang/'.$flag_size.'.png\') no-repeat scroll -'.($i*100).'px -'.($j*100).'px;"><img src="/modules/mod_gtranslate/tmpl/lang/blank.png" height="'.$flag_size.'" width="'.$flag_size.'" style="border:0;vertical-align:top;" alt="'.$lang_name.'" /></a></span> ';
        }
        else

            echo '<a href="javascript:doTranslate(\''.$language.'|'.$lang.'\')" title="'.$lang_name.'" style="font-size:'.$flag_size.'px;padding:1px 0;background:url(\'modules/mod_gtranslate/tmpl/lang/'.$flag_size.'.png\') no-repeat scroll -'.($i*100).'px -'.($j*100).'px;"><img src="/modules/mod_gtranslate/tmpl/lang/blank.png" height="'.$flag_size.'" width="'.$flag_size.'" style="border:0;vertical-align:top;" alt="'.$lang_name.'" /></a> ';
        endif;




if($i == 7) {
            $i = 0;
            $j++;
        } else {
            $i++;
        }

}
Con este cambio conseguimos mediante JQuery que aquellas banderas del módulo de GTranslate que corresponden a un idioma activado en Joom!Fish, no ejecuten el código de GTranslate, si no el de Joom!Fish, y podemos mostrar así las traducciones manuales y automáticas en un único módulo. En la lista desplegable de idiomas que GTranslate muestra debajo de las banderas, continua estando disponible la traducción automática a 43 idiomas.

Además conseguimos otro efecto: cuando un usuario registrado se loguea en el front, las banderas de aquellos idiomas que están instalados en Joom!Fish, pero todavia no están activados, llevan a las traducciones de Joom!Fish. Si el usuario, en cambio, no está logueado en el front, esas banderas conducen a la traducción automática de Google. Con esto conseguimos poder ir realizando las traducciones de los contenidos a un determinado idioma con Joom!Fish, pero que mientras ese idioma no esté activado, los visitantes sigan viendo la traducción automática de GTranslate. 

 

Paso 5: Modificar la libreria GTranslate.php

El fichero a modificar es /includes/GTranslate.php

Hay que añadir la siguiente función en la linea del 250 código, ya que la función original no permite pasar los idiomas por parámetro:

Antes:

    public function __call($name,$args)
    {
        $languages_list     =     explode("_to_",strtolower($name));
        echo $languages_list[1];
        $languages = $this->isValidLanguage($languages_list);

        $string     =     $args[0];
        return $this->query($languages,$string);
    }
Después:

    public function __call($name,$args)
    {
        $languages_list     =     explode("_to_",strtolower($name));
        echo $languages_list[1];
        $languages = $this->isValidLanguage($languages_list);

        $string     =     $args[0];
        return $this->query($languages,$string);
    }
   
    public function translate($lang1,$lang2,$text)
    {
        $languages_list[0]    = strtolower($lang1);
        $languages_list[1] = strtolower($lang2);
        $languages = $this->isValidLanguage($languages_list);
        return $this->query($languages,$text);
    }

y comentar la línea 120 para que no aparezca la URL:

    private function requestHttp($url)
    {
        //echo $url;
        return GTranslate::evalResponse(json_decode(file_get_contents($url)));
    }

Paso 6: Modificar el plugin missing_translations de Joom!Fish

El fichero a modificar es /plugins/joomfish/missing_translation.php

Hay que realizar dos cambios:

Primero, en la línea 38, vamos a incluir el fichero de la libreria de GTranslate añadiendo la siguiente linea al código:

Antes:

jimport( 'joomla.plugin.plugin' );
JPlugin::loadLanguage( 'plg_joomfish_missing_translation', JPATH_ADMINISTRATOR );
Después:

jimport( 'joomla.plugin.plugin' );
JPlugin::loadLanguage( 'plg_joomfish_missing_translation', JPATH_ADMINISTRATOR );
require("includes/GTranslate.php");
Luego, para activar esta funcionalidad, en la línea 74, reemplazaremos el típico mensaje de Joom!Fish "no translations available" por las funciones de traducción de Gtranslate:

Antes:

if ($defaultText=="") {
           $defaultText = '<div class="jfdefaulttext">' .JText::_('There are no translations available.'). '</div>';
}
Después:

if ($defaultText=="") {                        

                    $registry =& JFactory::getConfig();   
                    $langfrom=substr($default_lang, 0, 2);
                    $langto=substr($language, 0, 2);
                    
                    try{$gt = new Gtranslate;

if ($row_to_translate->title!=""){ $row_to_translate->title=$gt->translate($langfrom,$langto,$row_to_translate->title);}
if ($row_to_translate->introtext!=""){ $row_to_translate->introtext=$gt->translate($langfrom,$langto,$row_to_translate->introtext);}
if ($row_to_translate->fulltext!=""){ $row_to_translate->fulltext=$gt->translate($langfrom,$langto,$row_to_translate->fulltext);}
if ($row_to_translate->title_alias!=""){ $row_to_translate->title_alias=$gt->translate($langfrom,$langto,$row_to_translate->title_alias);}
if ($row_to_translate->alias!=""){ $row_to_translate->alias=$gt->translate($langfrom,$langto,$row_to_translate->alias);}
if ($row_to_translate->metadesc!=""){ $row_to_translate->metadesc=$gt->translate($langfrom,$langto,$row_to_translate->metadesc);}
if ($row_to_translate->metakey!=""){ $row_to_translate->metakey=$gt->translate($langfrom,$langto,$row_to_translate->metakey);   }                
                
                     }catch(GTranslateException $ge){};
  

}

Cada línea traduce un elemento, cuantos mas elementos traduzcamos, mas lento funcionará el sistema.

De esta manera, los artículos pendientes de traducir de los idiomas de Joom!Fish no se mostrarán en el idioma original, si no traducidos automáticamente por GTranslate.

Además, este mismo código hace que al traducir un artículo por primera vez, en la pantalla de edición se nos muestre el artículo traducido automáticamente, y no su idioma original. Esto facilita la labor de traducción ya que solo debemos corregir los posibles errores de GTranslate y luego guardar.

 

Y ya está. Con estas modificaciones conseguiremos la práctica integración de ambos sistemas en nuestra web.

 

Uso, una vez hechos los cambios:

Deberemos decidir qué idiomas son suficientemente importantes para que valga la pena realizar una traducción manual. Para decidir, debemos pensar cual es el público potencial de nuestra web, ya que las traducciones automáticas no se indexan en los buscadores, por lo que deberemos realizar la traducción manual con Joom!Fish a todos aquellos idiomas por los que queremos que nos encuentren. Recomendamos traducir la web siempre al español y al inglés, activar otros idiomas como francés o catalán en el caso que nuestra web tenga clientes potenciales en esas lenguas, y dejar la traducción automática para el resto de los idiomas posibles.

Una vez que hayamos decidido los idiomas principales, instalaremos los paquetes de esos idiomas en Joomla!, y también para TODAS LAS EXTENSIONES DE TERCEROS que tengamos instaladas.  

En cuanto instalemos el paquete de idioma en Joomla!, este ya estará disponible en Joom!Fish (NO ACTIVARLO TODAVIA!).

Primero deberemos traducir (mediante el procedimiento normal de Joom!Fish) los items de menús, secciones, categorias y los módulos.

Ahora deberemos ir traduciendo todos los artículos al nuevo idioma (también siguiendo el procedimiento normal de Joom!Fish). Gracias a las modificaciones, solo deberemos repasar la corrección del GTranslate y guardarla.

Una vez tengamos todas (o casi todas) las traducciones de los artículos guardadas, ya podremos ACTIVAR el nuevo idioma en Joom!Fish. Cuando hagamos esto, los visitantes de la web que hagan click en la bandera de este idioma, ya no serán dirigidos a la traducción automática de GTranslate, si no que veran nuestra traducción manual.

Si nos olvidamos de traducir un artículo de ese nuevo idioma, se mostrará la traducción automática del mismo.

Atención: No utilizar la traducción de GTranslate para sitios con muchas visitas o con muchos artículos, ya que esto reduce sensiblemente el rendimiento de la web. Una vez que activemos un idioma, deberemos intentar guardar las traducciones de TODOS LOS ARTÍCULOS DE ESE IDIOMA para reducir las consultas al GTranslate.

 

Podeis ver una demo en http://pro.infoal.com

 

Cualquier sugerencia para mejorar el código será bien recibida.

Cosas que quedan por resolver:

  • Si alguien tiene tiempo de buscar como hace Joom!Fish las traducciones de módulos y menús, podriamos hacer que se tradujeran automáticamente cuando no exista una traducción manual.
  • De vez en cuando la galeria de GTranslate php da un error. Creo que hay algún carácter que hace que falle, pero de momento no lo he encontrado.

 

 

   

Página 1 de 9


Login