Los problemas de Mambo con las RSS

Parece ser que Mambo 4.5.2 tiene un problema con los RSS bastante gordo. Por lo menos si tu idioma es el español. Intenté poner un enlace a un RSS en el portal de motociclismo MotosCanarias (http://www.motoscanarias.com) y el resultado fue desastroso. Sin embargo, después de una hora de trapicheo y lecturas infructuosas de foros conseguí­ que no salgan sí­mbolos como íƒÂ± o íƒÂº para las vocales acentuada o la eñe. No parece que nadie haya publicado una solución, asi que me pregunto si seré el primero en lograrlo xD.

La solución no es general y es poco más que un parche provisional. Pero funciona.

Todo lo que hay que hacer es abrir el fichero /componentes/com_newsfeed/newsfeeds.html.php y crear una función dentro de la clase HTML_newsfeed, la la única clase del fichero, asi que no tiene pérdida.

La función tiene el aspecto siguiente:


    function to_normal_spanish($text) {
        $output = $text;
        $output    = str_replace("íƒÂ±", "ñ", $output);
        $output    = str_replace("íƒÂ¡", "á", $output);
        $output    = str_replace("íƒÂ©", "é", $output);
        $output    = str_replace("íƒÂ³", "ó", $output);
        $output    = str_replace("íƒÂº", "ú", $output);
        $output    = str_replace("íƒÂ¿", "¿", $output);
        $output    = str_replace("íƒÂ¡", "¡", $output);
        $output    = str_replace("íƒ", "í­", $output);
        return $output;
    } 

Puede llamarse como quieras pero el asunto ahora consiste en registrar ese fichero buscando sentencias php de ‘echo’ y llamar a la función que acabamos de crear para que modifique el texto irregular por texto en Español bonito ;-) .

Por ejemplo, podemos cambiar en la lí­nea 350 (o por ahí­) la sentencia:


<?php echo $text;?>

Por la sentencia:


<?php echo HTML_newsfeed::to_normal_spanish($text); ?>  

Y asi con el resto de lí­neas del fichero. Esa es la última sentencia que aparece en el fichero y la que imprime el texto de los artí­culos.

A ver si en la nueva versión de Mambo arreglan estos problemillas. Supuestamente es debido a un problema con los encodings, que si UTF-8 para arriba , que si ISO-88xx-1 para abajo. En fin, ahí­ queda eso.

Posted By dsuarez

David nació en Las Palmas de Gran Canaria, España. Estudió Ingeniería en Informática en la Universidad de Las Palmas de Gran Canaria (ULPGC), donde ha trabajado en investigación los últimos años. Siempre ha sentido una gran curiosidad por los ordenadores y las ciencias, y más recientemente en el mundo empresarial. Ha trabajado como programador/analista, consultor en tecnologías de la información y obtuvo la beca de Google Summer of Code en 2006. Es socio fundador de Wantudu (http://wantudu.es), empresa especializada en terminales táctiles para hoteles.

Leave a Reply