Problema carácteres especiales en Pligg

5 de Febrero de 2009 Leído 608 veces
Esta entrada es la número 17 de 25 de la serie Ilumínalo

Ilumínalo, red de noticiasOtro problema con que me encontré en la instalación de la versión de Pligg 1.0.0 es el de los carácteres especiales para los ingleses. Es decir, nuestros acentos, eñes, diéresis. Sucede con cualquier lenguaje que utilice "adornos" en sus letras: español, francés, portugués, ...

Por defecto, Pligg coge como título del post el mismo que encuentra en la URL, si no se cambia y contiene carácteres especiales (cosa muy habitual en nuestra lengua) en la base de datos se guarda una URL que contiene las traducciones html de estos carácteres, y cuando desde Ilumínalo se intenta acceder a ella falla por que la URL real es con un carácter semejante al del acento pero sin él.

Por ejemplo: el acceso a un post de tílulo "Ilumínalo" se guardaría en base de datos como "ilumínalo" cuando debería guardarlo como "iluminalo".

Esto sucede si queremos que nuestras URLs sean amigables (sino no hay problema) y ya pasaba en las versiones anteriores de Pligg porque no está muy preparado para un soporte multiidioma real. La solución al problema la encontré de nuevo en los foros de Pligg y pasa por añadir unas "traducciones" en una de las librerías del software.

Hay que localizar el archivo /lib/utils.php y añadir en la función "makeUrlFriendly" (alrededor de la línea 310) la lista de traducciones que quieres que haga. En mi caso las vocales con acento, las eñes, las ç y las diéresis (en mayúsculas y en minúsculas):

PHP:
  1. $output = str_replace("á", "a", $output);
  2. $output = str_replace("é", "e", $output);
  3. $output = str_replace("í", "i", $output);
  4. $output = str_replace("ó", "o", $output);
  5. $output = str_replace("ú", "u", $output);
  6. $output = str_replace("ñ", "n", $output);
  7. $output = str_replace("Á", "A", $output);
  8. $output = str_replace("É", "E", $output);
  9. $output = str_replace("Í", "I", $output);
  10. $output = str_replace("Ó", "O", $output);
  11. $output = str_replace("Ú", "U", $output);
  12. $output = str_replace("ç", "c", $output);
  13. $output = str_replace("Ç", "C", $output);
  14. $output = str_replace("ñ", "n", $output);
  15. $output = str_replace("Ñ", "N", $output);
  16. $output = str_replace("ü", "u", $output);
  17. $output = str_replace("Ü", "U", $output);

Después de hacer este cambio y subirlo al servidor, las nuevas noticias que se envíen e incluyan alguno de esos carácteres funcionarán correctamente. Pero quedan las que alguien haya podido subir en el intervalo entre la instalación del software y el parche.

Para arreglar esas hay que acceder a la base de datos y modificarlas manualmente. Hay que repasarse las últimas que se hayan subido y contengan carácteres "raros". El campo a revisar es el "link_title_url" de la tabla "prefijo_links", donde prefijo es el que seleccionaras en el momento de la instalación. Sustituyendo los carácteres á, é, í, ó, ú, ñ ...  por su letra correspondiente (sin acentos ni similares) se arreglan las URLs de esas noticias.

Y eso es todo (en principio). Por suerte en Ilumínalo no hay tantísimo movimiento y en un rato parece que todas están arregladas.

Y mañana: más soluciones a problemas con Pligg!

URL de la solución en el foro de Pligg: http://forums.pligg.com/general-help/7708-solved-mangled-accents-link_title-field-links-table.html




Comentarios

  1. Juan
    Jueves, 30 de Abril de 2009 a las 04:40 | #1

    yo no puedo usar los acentos en los comentarios me aparecen ” ? ” y nose como cambiarlo =(

  2. Jueves, 5 de Febrero de 2009 a las 17:01 | #2

    Es un problema comun y muy molesto, blogger recien lo ha cubierto.

  1. Jueves, 5 de Febrero de 2009 a las 08:52 | #1

¿Te animas a comentar?


Me encantan los comentarios pero ...

  • - No utilices keywords como anchor text, se supone que eres una persona no un anuncio que escribe. Cambiaré los keywords en función de mi humor del momento.
  • - Lammers, Hoygans y Trolls abstenerse, eliminación directa del comentario.
  • - Opina, a favor o en contra; aporta lo que consideres de valor. Pero ante todo: respeta las opiniones del resto.