/VTEX-Smart-Research

Resultados de busca automáticos ao usuário selecionar um filtro no menu lateral

Primary LanguageJavaScript

#VTEX - Smart Research

Extensões da plataforma VTEX são plugins criados por desenvolvedores de interface ou pelo VTEX Lab (Laboratório de Inovações da VTEX) que podem ser inseridas em sua loja. Existem extensões gratuitas com código aberto - Open Source - e extensões pagas. Indicamos que a instalação seja realizada pelos profissionais e empresas certificados pela VTEX. Vale ressaltar que qualquer profissional de CSS, JavaScript e HTML pode também executar esta tarefa.


Veja este componente na VTEX Store

##Instalação Faça o upload para o "Gerenciador do portal" no "Vtex Admin" dos seguintes arquivos:

  • vtex-smartResearch.css
  • vtex-smartResearch.min.js

Faça a chamada do arquivo javascript e CSS na página:

<link rel="stylesheet" type="text/css" href="/arquivos/vtex-smartResearch.css" />
<script type="text/javascript" src="/arquivos/vtex-smartResearch.min.js"></script>

Certifique-se que na página existe o controle <vtex.cmc:searchNavigator /> e que os produtos possueem opções de filtros.

Execute o plugin sempre selecionando os check-box retornados pelo controle:

$(".menuLateral input[type='checkbox']").vtexSmartResearch();

###Avançado

Configurações completas do plugin (lista atualizada em 07/11/2012):

$(".menuLateral input[type='checkbox']").vtexSmartResearch({
	pageLimit:null, // Número máximo de páginas que o script irá retornar. Exemplo "pageLimit=3" só será retornado resultados até a terceira página
	loadContent:".prateleira[id^=ResultItems]", // Elemento que esta em volta da(s) prateleira(s) de produtos.
	shelfClass:".prateleira", // Pratelira de produtos (filha do elemento definido de um "loadContent")
	filtersMenu:".search-multiple-navigator", // Menu com os filtros
	linksMenu:".search-single-navigator", // Menu de links
	menuDepartament:".navigation .menu-departamento", // seletor do menu da página de departamentos
	mergeMenu:true, // Define se o menu de links será mesclado com o de filtros será mesclado na página de departamento
	insertMenuAfter:".search-multiple-navigator h3:first", // O menu de links será inserido após este elemento
	emptySearchElem:jQuery('<div class="vtexsr-emptySearch"></div>'), // Elemento Html (em Objeto jQuery) no qual será adicionado a mensagem de busca vazia
	elemLoading:'<div id="scrollLoading">Carregando ... </div>', // Elemento com mensagem de carregando ao iniciar a requisição da página seguinte
	returnTopText:'<span class="text">voltar ao</span><span class="text2">TOPO</span>', // Mensagem de "retornar ao topo"
	emptySearchMsg:'<h3>Esta combinação de filtros não retornou nenhum resultado!</h3>', // Html com a mensagem para ser apresentada quando não existirem resultados para os filtros selecionados
	filterErrorMsg:"Houve um erro ao tentar filtrar a página!", // Mensagem de erro exibida quando existe algum erro de servidor ao aplicar os filtros
	searchUrl:null, // Url da página de busca (opicional)
	usePopup:false, // Opção p/ definir se deseja que a mensagem de não localizado seja exibida em um popup
	showLinks:true, // Exibe o menu de links caso o de filtro não seja encontrado
	popupAutoCloseSeconds:3, // Caso esteja utilizando popup, defina aqui o tempo para que ele feche automaticamente
	// Função que retorna o valor p/ onde a página deve rolar quando o usuário marca ou desmarca um filtro
	filterScrollTop:function(shelfOffset)
	{
		return (shelfOffset.top-20);
	},
	callback:function(){},
	// Cálculo do tamanho do conteúdo/vitrine para que uma nova página seja chamada antes do usuário chegar ao "final" do site
	getShelfHeight:function(container)
	{
		return (container.scrollTop()+container.height());
	},
	// Callback após inserir a prateleira na página
	shelfCallback:function(){},
	// Callback em cada requisição Ajax (Para requisições feitas com sucesso)
	// Recebe como parâmetro um objeto contendo a quantidade total de requisições feitas e a quantidade de filtros selecionados 
	ajaxCallback:function(){},
	// Função que é executada quando a seleção de filtros não retorna nenhum resultado
	// Recebe como parâmetro um objeto contendo a quantidade total de requisições feitas e a quantidade de filtros selecionados 
	emptySearchCallback:function(){},
	// Função para permitir ou não que a rolagem infinita execute na página esta deve retornar "true" ou "false"
	// Recebe como parâmetro um objeto contendo a quantidade total de requisições feitas e a quantidade de filtros selecionados 
	authorizeScroll:function(){return true;},
	// Função para permitir ou não que o conteúdo de "loadContent" seja atualizado. Esta deve retornar "true" ou "false"
	// Recebe como parâmetro um objeto contendo a quantidade total de requisições feitas e a quantidade de filtros selecionados 
	authorizeUpdate:function(){return true;},
	// Callback de cada laço percorrendo os fildsets e os labels. Retorna um objeto com algumas informações
	labelCallback:function(data){}
});