Skip to content

Instantly share code, notes, and snippets.

@enniosousa
Created November 26, 2017 22:10
Show Gist options
  • Save enniosousa/fd4414a3e311819bfb2fe26963223c29 to your computer and use it in GitHub Desktop.
Save enniosousa/fd4414a3e311819bfb2fe26963223c29 to your computer and use it in GitHub Desktop.

uCoz: Ajax pagination at modules

This Javascript code modifies the function spages().

What it does
  • Ajax pagination (if it is enabled on the Common settings)
  • Scrolls the page to the top after clicking on the button
  • Change the URL in address bar to requested page, like Google Webmasters says.
  • Send pageview to Google Analytics (if you are using)
Notes
  • You need to put this code after the [BODY], I recommend put on Global Block Bottom part of the website
  • A troca o URL na barra de endereços e envio de pageview para GA só acontece se você estive criado o objeto javascript do infinteScroll.
  • It has only been tested in modules /publ, /dir, /load and /board. If you test and adapt to another module, please let me know. :)

uCoz: Paginação Ajax dos módulos

Este código Javascript modifica a função spages().

O que ele faz
  • Pagina Ajax do uCoz (se estiver ativada nas configurações gerais)
  • Rola a página para o topo depois de clicar no botão
  • Troca o URL na barra de endereços da pagina carrega, conforme manda o manual do Google Webmasters
  • Envia pageview para o Google Analytics (caso esteja usando)
Observações
  • Você precisa colocar este código depois do [BODY] da página, recomendo colocar no Bloco Global Parte inferior do site.
  • A troca o URL na barra de endereços e envio de pageview para GA só acontece se você estive criado o objeto javascript do infinteScroll.
  • Só foi testado nos módulos /publ, /dir, /load e /board. Caso você teste e adapte para outro módulo, favor me avisar. :)
Code / Código

Javascript only

/**
 * Modificando a função spages() para rolar a página para cima.
 */
$(document).ready(function () {
    if (typeof spages === "function") {
        // expressão regular para pegar o corpo da função
        var funcBody_re = new RegExp("[.*\A{](.*)[.*\Z}]");
        
        // expressão regular para pegar os parametros da função
        var funcParams_re = new RegExp("[\A(](.*?)[\Z)]");
        
        //função em string
        var func = spages.toString();
        
        var funcBody_m = funcBody_re.exec(func);

        if (funcBody_m !== null) {//caso a função exista
            /**
             * Rolar a página para o topo
             */
            var aditionalJS = "$('html, body').animate({scrollTop : 200},800);";
            
            /**
             * Trocando o URL na barra de endereços
             * Enviando page view para o Google Analytics
             */
            if (typeof infiniteScroll.main_page_url === "string") {
                aditionalJS += "var newUrl = infiniteScroll.main_page_url;if(p>1){newUrl+='?page' + p;}if (typeof ga === \"function\" && window.location.href !== newUrl) {ga('send', 'pageview', newUrl);console.log(\"send to GA: \"+newUrl);}history.replaceState(null, null, newUrl);console.log(\"addr bar: \"+newUrl);";
            }

            /**
             * Criando a função e sobrescrevendo a original
             * 
             * A pagina inicial do módulo e a página de postagem tem 2 parametros
             * As páginas seção e categoria tem 3 parametros
             */
            var params = funcParams_re.exec(func);
            var params_ = params[1].split(",");
            if (params_.length === 2) {
                //spages(p,link)
                spages = new Function(params_[0], params_[1], funcBody_m[0] + aditionalJS);
            }
            else {
                //spages(p,s,link)
                spages = new Function(params_[0], params_[1], params_[2], funcBody_m[0] + aditionalJS);
            }
        }
    }
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment