Tecnologías, Internet y Contenidos v. 2.0

Joomla, Wordpress, Blogger, Twitter...

En un artículo anterior os comentaba como resolví un problema que tiene Joomla 1.5 en la búsquedas de palabras con acentos. La solución funcionalmente era buena, pero si la palabra de búsqueda que obteníamos no contenía las tildes, esta palabra no se resaltaba en los resultados de la búsqueda, aunque conseguiamos que se buscase correctamente. Ahora os comento como mejorar esa solución para que las palabras que buscamos salgan resaltadas las busquemos con tilde o sin tilde con una simple modificación de unas líneas.

A la solución anterior, habría que añadir el siguiente cambio en el fichero components\com_search\views\search\view.html.php. Recordad este fichero forma parte del núcleo de Joomla, por lo que si lo modificais y luego actualizais Joomla es posible que se pierda el cambio que realizasteis.

Tendrías que cambiar las líneas 137 a 140 del fichero por esto que os paso, es decir, este código:

foreach ($searchwords as $k => $hlword)
{
$searchRegex .= ($x == 0 ? '' : '|');
$searchRegex .= preg_quote($hlword, '#');
por este otro:
$equivalents = array(
'a' => '[aâàá]',
'e' => '[eèêé]',
'i' => '[iìîí]',
'o' => '[oôòó]',
'u' => '[uûùú]',
);
foreach ($searchwords as $k => $hlword)
{
$searchRegex .= ($x == 0 ? '' : '|');
$hlword = preg_quote($hlword, '#');

foreach ( $equivalents AS $find => $replace ) {
$hlword = str_replace($find, $replace, $hlword);
}
$searchRegex .= $hlword;


De esta manera, le decimos a Joomla que resalta todas las palabras que sean iguales a lo que buscamos, tengan o no tengan el acento puesto.

Espero vuestros comentarios, a mi la solución me sirvió. Ya la tengo en producción y no se me ha reportado error de ningún tipo. Espero que os sirva a todos.

6 comentarios

  1. Anónimo Says:
  2. Hola soy jexgal he hecho los cambios descritos pero a mi no me funciona sigue sin resaltarme las palabras de hecho en aquellos articulos en los que la palabra buscada no está al principio del título ni sale.

     
  3. Anónimo Says:
  4. Hola de nuevo. Algo no funciona. Ya no me resalta ni acentuadas ni sin acentuar.

     
  5. Jose Says:
  6. Hola Jexgal.. Haz hecho las dos modificaciones que explico en el blog. Recuerda que, como digo al principio de la entrada, antes de hacer esto es mejor realizar la modificación que explico en la entrada Busqueda de artículos con tilde". Si después de realizar las dos modificaciones no te funciona, enviame tu archivo modificado al correo (josesieiro[@]hotmail.com)y le echo un vistazo.

    Un saludo

     
  7. Anónimo Says:
  8. La búsqueda resaltada no me funciona.
    ME da el siguiente error

    Warning: preg_replace() [function.preg-replace]: Compilation failed: invalid UTF-8 string at offset 36 in /homepages/10/d291589420/htdocs/joomla/components/com_search/views/search/view.html.php on line 161

    Si lo puedes solucionar estaría perfecto

     
  9. Jose Says:
  10. Seguramente el proble te ocurre por el editor que hayas utilizado para editar el archivo. No se que editor usas, pero si usas eclipse tu problema se solucionaría guardando el archivo codificado como UTF-8. El problema surge porque muchos editores de texto al guardar cambian la codificación del archivo.

    Si sigue sin funcionarte o cualquier duda que tengas no dudes en preguntar.

    Un saludo.

     
  11. Anónimo Says:
  12. Hola,

    Un gran trabajo. Mis felicitaciones.

    Pero quedaría redondo si mostrara la parte del texto en la que aparece resaltada la búsqueda. Cuando se busca con tilde o una palabra que no la lleva, aparece resaltada la palabra en la parte del contenido. Cuando se usa una búsqueda con tilde sólo aparece el comienzo del artículo y, si la palabra buscada no está ahí, no se ve.

    Por lo demás, es un trabajo excepcional de ayuda para todos.

    Saludos

     

Publicar un comentario

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.