cvscarlos/QD-Infinity-Scroll

Plugin não funciona com coleções

Opened this issue · 5 comments

Ao usar uma coleção paginada, ao invés de do controle <vtex.cmc:searchResult />, o plugin não funciona. Isso acontece porque a URL a ser carregada no caso de coleções paginadas no placeholder é do tipo

/paginaprateleira?pc=147&ps=6&sa=False&tt=Vitrine&sl=85e23371-f0a2-43c2-a6ac-e5464c462fb3&cc=3&sm=0&PageNumber=

A expressão regular na função getSearchUrl está ajustada apenas para o caso em que a URL das páginas é do tipo /buscapagina.... Ou seja, a função precisa ser modificada.

Por ora, é possível passar uma função para a propriedade searchUrl que componha corretamente a URL no caso de coleções paginadas, mas o ideal é mexer na função getSearchUrl.

Ok, vou corrigir, se possível mande um pull request. Abraços

Então, eu acho que consigo dar fork no final de semana. Mas aconteceu um negócio estranho, se liga. Eu fiz o seguinte:

$(".prateleira[id*=ResultItems]").infinityScroll({
            searchUrl: (function()
            {
                var url, content, preg;
                jQuery("script:not([src])").each(function(){
                    content=jQuery(this)[0].innerHTML;
                    preg=/\/paginaprateleira\?.+&PageNumber=/i;
                    if(content.search(/\/paginaprateleira?/i)>-1)
                    {
                        url=preg.exec(content);
                        return false;
                    }
                });
                if(typeof(url)!=="undefined" && typeof(url[0])!=="undefined")
                    return url[0];
                else
                {
                    log("Não foi possível localizar a url de busca da página.\n Tente adicionar o .js ao final da página. \n[Método: getSearchUrl]");
                    return "";
                }
            })()
        });

A função executa e pega a URL certinho, o problema parece ser com a VTEX. O get retorna um erro 500 (erro ao renderizar controle vtex) ao pedir a URL /paginaprateleira?pc=147&ps=6&sa=False&tt=Vitrine&sl=85e23371-f0a2-43c2-a6ac-e5464c462fb3&cc=3&sm=0&PageNumber=2.

A URL parece ter sido montada certinha.

Tirei o firendly error. A URL /paginaprateleira retorna 404. Olha só um exemplo da tag script que vem na página quando há uma coleção paginada ao invés de um controle <vtex.cmc:searchResult />:

<script type="text/javascript">
            var pagecount_1dc930e011d44a0db64017053bdbd7c2;
            $(document).ready(function () {
                pagecount_1dc930e011d44a0db64017053bdbd7c2 = 9
                $('#PagerTop_1dc930e011d44a0db64017053bdbd7c2').pager({ pagenumber: 1, pagecount: pagecount_1dc930e011d44a0db64017053bdbd7c2, buttonClickCallback: PageClick_1dc930e011d44a0db64017053bdbd7c2 });
                $('#PagerBottom_1dc930e011d44a0db64017053bdbd7c2').pager({ pagenumber: 1, pagecount: pagecount_1dc930e011d44a0db64017053bdbd7c2, buttonClickCallback: PageClick_1dc930e011d44a0db64017053bdbd7c2 });
                if (window.location.hash != '') PageClick_1dc930e011d44a0db64017053bdbd7c2(window.location.hash.replace(/\#/, ''));
            });
            PageClick_1dc930e011d44a0db64017053bdbd7c2 = function (pageclickednumber) {
                window.location.hash = pageclickednumber;
                $('#ResultItems_1dc930e011d44a0db64017053bdbd7c2').load('/paginaprateleira?pc=147&ps=6&sa=False&tt=Vitrine&sl=85e23371-f0a2-43c2-a6ac-e5464c462fb3&cc=3&sm=0&PageNumber=' + pageclickednumber,
                    function () {
                        $('#PagerTop_1dc930e011d44a0db64017053bdbd7c2').pager({ pagenumber: pageclickednumber, pagecount: pagecount_1dc930e011d44a0db64017053bdbd7c2, buttonClickCallback: PageClick_1dc930e011d44a0db64017053bdbd7c2 });
                        $('#PagerBottom_1dc930e011d44a0db64017053bdbd7c2').pager({ pagenumber: pageclickednumber, pagecount: pagecount_1dc930e011d44a0db64017053bdbd7c2, buttonClickCallback: PageClick_1dc930e011d44a0db64017053bdbd7c2 });
                        bindQuickView();
                    });
            }
            </script>

Não é estranho que a URL retorne 404? Parece que algo foi tirado do sistema. Paginação em coleções não funciona?

Eu troquei /paginaprateleira por /buscapagina e funcionou. A funcionalidade deve ter sido atualizada, mas a tag script não.

Olá, tudo bem? atualmente a vtex no smartcheckout está utilizando só com o return url, pois dessa forma de trocar /paginaprateleira por /buscapagina nas coleções a busca vai funcionar só que vai dar problema, pois a busca é uma busca já a pagina prateleira é especifica, então pelo menos na versão smart checkout que foi o ultimo update o interessante é urilizar somente o url[0], mas meu agradeço muito por vocês terem criado esse plugin e disponibilizado, ajuda muito!