- 15 Ago 2012, 20:32
#26044
Este VQMod faz com que Opencart realiza buscas de produtos indiferente da acentuação, tanto na loja quanto na área de administração.
Peguei a idéia do Folken Laccour Fanel nesse fórum http://phpbrasil.com/phorum/read.php?5,146360
Esse VQmod Funciona na versão 1.5.3.1
Peguei a idéia do Folken Laccour Fanel nesse fórum http://phpbrasil.com/phorum/read.php?5,146360
Código: Selecionar todos
Copie o código, crie um arquivo XML e coloque na pasta vqmod/xml.<modification>
<id>Busca indiferente da acentuacao</id>
<version>1.0</version>
<vqmver>1.1.0</vqmver>
<author>Lien Kuan Min</author>
<file name="catalog/model/catalog/product.php">
<operation>
<search position="after" index="1,2"><![CDATA[$words = explode(' ', trim(preg_replace('/\s\s+/', ' ', $data['filter_name'])));]]></search>
<add><![CDATA[
$padrao=array("/(a|á|à|ã|â)/" ,"/(e|é|ê)/","/(i|í|î)/","/(o|ó|õ|ô)/","/(u|ú|û|ü)/","/(c|ç)/");
$substituicao=array("(a|á|à|ã|â)" ,"(e|é|ê)" ,"(i|í|î)" ,"(o|ó|õ|ô)" ,"(u|ú|û|ü)" ,"(c|ç)" );
]]></add>
</operation>
<operation>
<search position="replace" index="1,2"><![CDATA[$implode[] = "LCASE(pd.name) LIKE '%" . $this->db->escape(utf8_strtolower($word)) . "%' OR LCASE(pd.description) LIKE '%" . $this->db->escape(utf8_strtolower($word)) . "%'";]]></search>
<add><![CDATA[
$implode[] = 'LCASE(pd.name) REGEXP "'.preg_replace($padrao, $substituicao, $this->db->escape(utf8_strtolower($word))).'" OR LCASE(pd.description) REGEXP "'.preg_replace($padrao, $substituicao, $this->db->escape(utf8_strtolower($word))) .'"';
]]></add>
</operation>
<operation>
<search position="replace" index="1,2"><![CDATA[$implode[] = "LCASE(pd.name) LIKE '%" . $this->db->escape(utf8_strtolower($word)) . "%'";]]></search>
<add><![CDATA[
$implode[] = 'LCASE(pd.name) REGEXP "'.preg_replace($padrao, $substituicao, $this->db->escape(utf8_strtolower($word))).'"';
]]></add>
</operation>
</file>
<file name="admin/model/catalog/product.php">
<operation>
<search position="replace" index="1,2"><![CDATA[$sql .= " AND LCASE(pd.name) LIKE '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "%'";]]></search>
<add><![CDATA[
$padrao=array("/(a|á|à|ã|â)/" ,"/(e|é|ê)/","/(i|í|î)/","/(o|ó|õ|ô)/","/(u|ú|û|ü)/","/(c|ç)/");
$substituicao=array("(a|á|à|ã|â)" ,"(e|é|ê)" ,"(i|í|î)" ,"(o|ó|õ|ô)" ,"(u|ú|û|ü)" ,"(c|ç)" );
$sql .= " AND LCASE(pd.name) REGEXP '" .preg_replace($padrao, $substituicao, $this->db->escape(utf8_strtolower($data['filter_name']))) . "'";
]]></add>
</operation>
</file>
</modification>
Esse VQmod Funciona na versão 1.5.3.1