Fórum OpenCart Brasil

Por um e-commerce livre, confiável e profissional

Suporte geral sobre problemas técnicos para OpenCart v1.x.
Avatar do usuário
Por marcelosh
#76603
amigos,

gostaria de tirar uma dúvida, a busca procura nas tags? No meu Opencart só busca nos tútulos.

estou usando esse mod xml

-----
<modification>
<id>A More Robust Search Field</id>
<version>1.5.x</version>
<vqmver>0.0.2</vqmver>
<author>wishmedia.ca</author>



<file name="catalog/model/catalog/product.php">

<operation error="abort" info="Add Manufacturer to the Query">
<search position="replace"><![CDATA[$sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd]]></search>
<add><![CDATA[$sql .= " LEFT JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id) LEFT JOIN " . DB_PREFIX . "product_description pd]]></add>
</operation>

<operation error="abort" info="">
<search position="replace"><![CDATA[$implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'";]]></search>
<add><![CDATA[
if(strlen($word) > 3 && strpos($word,'s') !== false){
$implode[] = "pd.name LIKE '%" . $this->db->escape(rtrim($word,'s')) . "%'";
$implode[] = "m.name LIKE '%" . $this->db->escape($word) . "%'";
}else{
$implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'";
$implode[] = "m.name LIKE '%" . $this->db->escape($word) . "%'";
}
]]></add>
</operation>

<operation error="abort" info="">
<search position="replace"><![CDATA[$sql .= " " . implode(" OR ", $implode) . "";]]></search>
<add><![CDATA[
$sql .= " " . implode(" AND ", $implode) . "";
]]></add>
</operation>

</file>



</modification>
____
Avatar do usuário
Por valdeir2000
Mensagens Especiais
#76607
Adicione o trecho abaixo em seu vqmod/OCMod.
Código: Selecionar todos
$sql .= " OR pd.tag LIKE '%" . $this->db->escape($word]) . "%'";
Ps.: Como você postou na área do OC 1.5.x, o código acima foi baseado na versão 1.5.6.4
Editado pela última vez por valdeir2000 em 04 Jan 2018, 18:12, em um total de 1 vez.
Avatar do usuário
Por marcelosh
#76619
oi amigo... meu OP é 1.5.6.4... mas quero saber se coloco abaixo da linha:
$sql .= " " . implode(" AND ", $implode) . "";
ou se substituo.

abs
Avatar do usuário
Por valdeir2000
Mensagens Especiais
#76626
Pode ser abaixo.

Ps.: Tente substituir "AND" por "OR" ao utilizar a função "implode()"

Editei o código.
Avatar do usuário
Por marcelosh
#76632
Fiz o teste e houve algum problema que deu erro 500 no BD.

Deixei o código assim:
Código: Selecionar todos
		<operation error="abort" info="">
			<search position="replace"><![CDATA[$sql .= " " . implode(" AND ", $implode) . "";]]></search>
			<add><![CDATA[
				$sql .= " " . implode(" AND ", $implode) . "";
				$sql .= " OR pd.tag LIKE '%" . $this->db->escape($word]) . "%'";
			]]></add>
		</operation>
Meu objetivo é que ele busque palavras e as combine para filtrar, vi que a tag está funcionando, mas preciso por exatamente a combinação, no caso:
Vectra 2.0 16v - a pessoa teria que digitar exatamente igual para indexar, gostaria que se escrevesse na busca - Vectra 16v - e indexasse

Gente preciso de ajuda urgente. Na migraç&a[…]

Caro @reds , muito obrigado pela resposta.

PHP 8+ incompatibilidade

Toda tradução para a versão 3[…]

Ola @alex3257 Se você precisa apenas ver […]