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)por este otro:
{
$searchRegex .= ($x == 0 ? '' : '|');
$searchRegex .= preg_quote($hlword, '#');
$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.