jonysi_d Posted April 18, 2013 Share Posted April 18, 2013 (edited) Hola.. tengo ya la tienda online operativa hace ya unos meses y funcionaba perfectamente hasta hoy, no se porque pero el buscador de productos, no encuentra ningún producto. Tienen alguna idea del porque ??? les dejo en enlace a mi tienda online y así es como lo tengo seleccionado: por cierto, la version con la que trabajo es la 1.4.8 gracias Edited April 18, 2013 by jonysi_d (see edit history) Link to comment Share on other sites More sharing options...
jonysi_d Posted April 18, 2013 Author Share Posted April 18, 2013 He estado comprobando archivos del templates pero parece estar todo correcto... buf...!! debo solucionarlo y no se ni por donde empezar... a ver si pueden ayudarme gracias Link to comment Share on other sites More sharing options...
Sergio Ruiz Posted April 18, 2013 Share Posted April 18, 2013 No se si esto: http://www.prestashop.com/forums/topic/113190-search-for-the-front-and-back-office-are-two-different-animals-why-front-office-does-not-work-correctly-lost-sales/page__p__856337__hl__search_index__fromsearch__1?do=findComment&comment=856337 te servira. Link to comment Share on other sites More sharing options...
jonysi_d Posted April 18, 2013 Author Share Posted April 18, 2013 (edited) lo he modificado así, pero no se si esta correcto, no soy muy entendido en php, solo lo justito.. : ---------- texto original ------------ $intersectArray[] = 'SELECT id_product FROM '._DB_PREFIX_.'search_word sw LEFT JOIN '._DB_PREFIX_.'search_index si ON sw.id_word = si.id_word WHERE sw.id_lang = '.(int)$id_lang.' AND sw.word LIKE '.($word[0] == '-' ? ' \''.pSQL(Tools::substr($word, 1, PS_SEARCH_MAX_WORD_LENGTH)).'%\'' : '\''.pSQL(Tools::substr($word, 0, PS_SEARCH_MAX_WORD_LENGTH)).'%\'' ); if ($word[0] != '-') $scoreArray[] = 'sw.word LIKE \''.pSQL(Tools::substr($word, 0, PS_SEARCH_MAX_WORD_LENGTH)).'%\''; } else unset($words[$key]); -------- y lo he dejado así -------- = $intersectArray[] = 'SELECT distinct p.id_product FROM ps_product p LEFT JOIN ps_product_lang pl ON (p.id_product = pl.id_product AND pl.id_lang = '.(int)$id_lang.') WHERE pl.name LIKE \'%'.pSQL($expr).'%\''; if ($word[0] != '-') $scoreArray[] = 'sw.word LIKE \''.pSQL(Tools::substr($word, 0, PS_SEARCH_MAX_WORD_LENGTH)).'%\''; } else unset($words[$key]); correcto ?? lo pregunto porque antes de hacerlo en el servidor, quiero asegurarme no vaya a fastidiar nada ... gracias Edited April 18, 2013 by jonysi_d (see edit history) Link to comment Share on other sites More sharing options...
jonysi_d Posted April 18, 2013 Author Share Posted April 18, 2013 (edited) He estado mirando los archibos error.log de mi panel y efectivamente sale un error de búsqueda, a ver si pueden ayudarme. El error es el siguiente: [Thu Apr 18 13:01:20 2013] [error] [client 83.46.171.114] PHP Warning: preg_replace(): Compilation failed: disallowed Unicode code point (>= 0xd800 && <= 0xdfff) at offset 1829 in /var/www/vhosts/miweb/httpdocs/classes/Search.php on line 103, referer: http://www.miweb/miwebdeladmin/index.php?tab=AdminSearchConf&conf=6&token=b11dc9b221cdc288341e2fc3751b0f8c&conf=4 en la linea 103 tengo esto: public static function sanitize($string, $id_lang, $indexation = false) { $string = Tools::strtolower(strip_tags($string)); $string = html_entity_decode($string, ENT_NOQUOTES, 'utf-8'); $string = preg_replace('/(['.PREG_CLASS_NUMBERS.']+)['.PREG_CLASS_PUNCTUATION.']+(?=['.PREG_CLASS_NUMBERS.'])/u', '\1', $string); $string = preg_replace('/['.PREG_CLASS_SEARCH_EXCLUDE.']+/u', ' ', $string); if ($indexation) $string = preg_replace('/[._-]+/', '', $string); else { $string = preg_replace('/[._]+/', '', $string); $string = ltrim(preg_replace('/([^ ])-/', '$1', ' '.$string)); $string = preg_replace('/[._]+/', '', $string); $string = preg_replace('/[^\s]-+/', '', $string); linea 113 } $blacklist = Configuration::get('PS_SEARCH_BLACKLIST', (int)$id_lang); if (!empty($blacklist)) { $string = preg_replace('/(?<=\s)('.$blacklist.')(?=\s)/Su', '', $string); $string = preg_replace('/^('.$blacklist.')(?=\s)/Su', '', $string); $string = preg_replace('/(?<=\s)('.$blacklist.')$/Su', '', $string); $string = preg_replace('/^('.$blacklist.')$/Su', '', $string); } if (!$indexation) { $words = explode(' ', $string); $processed_words = array(); // search for aliases for each word of the query foreach ($words as $word) { $alias = new Alias(null, $word); if (Validate::isLoadedObject($alias)) $processed_words[] = $alias->search; else $processed_words[] = $word; } $string = implode(' ', $processed_words); } Edited April 18, 2013 by jonysi_d (see edit history) Link to comment Share on other sites More sharing options...
jonysi_d Posted April 18, 2013 Author Share Posted April 18, 2013 (edited) Ya esta solucionado.. buf...!!! menos mal..!!! la solución por si a alguien le sirve es modificar el archivo classes/Search.php : linea 56 debe de quedar así: '\x{fd3f}\x{fdfc}-\x{fe6b}\x{feff}-\x{ff0f}\x{ff1a}-\x{ff20}\x{ff3b}-\x{ff40}'. ni puñetera idea de porque se soluciona, pero si que se soluciona. la solución es de este post: post de este foro Edited April 18, 2013 by jonysi_d (see edit history) 1 Link to comment Share on other sites More sharing options...
Sergio Ruiz Posted April 18, 2013 Share Posted April 18, 2013 Ya esta solucionado.. buf...!!! menos mal..!!! la solución por si a alguien le sirve es modificar el archivo classes/Search.php : linea 56 debe de quedar así: '\x{fd3f}\x{fdfc}-\x{fe6b}\x{feff}-\x{ff0f}\x{ff1a}-\x{ff20}\x{ff3b}-\x{ff40}'. ni puñetera idea de porque se soluciona, pero si que se soluciona. la solución es de este post: post de este foro Vaya ! Pues entoces añade la palabra solucionado al titulo del tema. Link to comment Share on other sites More sharing options...
Recommended Posts