Fórum OpenCart Brasil

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

Suporte para Módulos e Caixas Laterais.
Por rdanna
#24423
Existe algum módulo free ou barato que inclua na busca os atributos do produto? Como tamanho, cor, etc...

Encontrei alguns, mas sem demo, pouco indicados. Ou alguns que criavam umas telas novas...

O que eu quero é que continue usando a mesma busca, mas se eu digitar, por exemplo 40, filtre pelos calçados que contenham numeração 40...
Editado pela última vez por rdanna em 18 Jul 2012, 10:53, em um total de 1 vez.
Por rdanna
#24446
Como não achei nenhum free, acabei fazendo na mão mesmo... menos complicado que eu imaginava.

No catalog/view/theme/LOJA/template/product/search.tlp repliquei o checkbox que tem para "busca na descrição" e renomeei para filter_option:
Código: Selecionar todos
<?php if ($filter_option) { ?>
    <input type="checkbox" name="filter_option" value="1" id="option" checked="checked" />
<?php } else { ?>
    <input type="checkbox" name="filter_option" value="1" id="option" />
<?php } ?>
<label for="option">Busca nas opções</label>
No catalog/controller/product/search.php repliquei todas as linhas onde usava filter_description e renomiei para filter_option... exemplo:
Código: Selecionar todos
if (isset($this->request->get['filter_description'])) {
	$filter_description = $this->request->get['filter_description'];
} else {
	$filter_description = '';
} 

if (isset($this->request->get['filter_option'])) {
	$filter_option = $this->request->get['filter_option'];
} else {
	$filter_option = '';
}
E no catalog/model/catalog/product.php, na function getProducts adicionei este código junto aos outros left joins :
Código: Selecionar todos
if (!empty($data['filter_option'])) { 			
    $sql .= " LEFT JOIN " . DB_PREFIX . "product_option_value pov ON (p.product_id = pov.product_id) LEFT JOIN " . DB_PREFIX . "option_value_description ovd ON (pov.option_value_id = ovd.option_value_id)";
}
e este dentro do foreach ($words as $word), logo após o else do filter_description:
Código: Selecionar todos
if (!empty($data['filter_option'])) {
    $implode[] = "LCASE(ovd.name) LIKE '%" . $this->db->escape(utf8_strtolower($word)) . "%'";
}
No resultado final, ficou um checkbox igual ao de "busca na descrição" mas para as opções do produto. :)
Por preto
#24600
Bem interessante sua resolucao. Estou tentando fazer uma busca por um elemento que eu criei no banco, no caso é uma livraria e criei o campo autor. Ele fica na tabela Product. Tentei adaptar sua solucao mas nao consegui. Tem alguma sugestao?
Por rdanna
#26000
Desculpa a demora, fiquei um poco parado aqui no fórum.

Para o seu problema adiciona essa linha:
Código: Selecionar todos
$implode[] = "LCASE(p.autor) LIKE '%" . $this->db->escape(utf8_strtolower($word)) . "%'";
dentro do foreach ($words as $word), no arquivo catalog/model/catalog/product.php