Prestashop: aggiungere un contatore per visualizzare il tempo di caricamento delle pagine del negozio

Adobe Photoshop: aumentare nitidezza di una foto mossa o sfuocata
9 luglio 2014
Joomla: immagini non visibili su pagine diverse da home-page se il SEO è attivato
22 settembre 2014

prestashopTempoDiCaricamentoNel Backoffice di prestashop, in basso a sinistra, c’è un indicazione del tempo di caricamento di ciascuna pagina …

Mi hanno chiesto di ottenere lo stesso contatore nel pagine del negozio pubblico.

Per svolgere questo compito sono andato a vedere come questa cosa viene ottenuta nel backend: nel template dell’interfaccia di amministrazione, in particolare in admin/themes/default/templatefooter.tpl c’è la riga magica che calcola il tempo di caricamento.

<span>{l s='Load time: '}{number_format(microtime(true) - $timer_start, 3, '.', '')}s</span>;

come potete vedere, il tempo in secondi intercorso tra l’inizio della renderizzazione della pagina e la fine viene calcolato sottraendo al tempo corrente (microtime(true)) in contenuto della variabile $timer_start che viene così definita in admin/index.php

$timer_start = microtime(true);

Facile, mi sono detto, faccio la stessa cosa nel tema del front-end; ma non funziona allo stesso modo, anche se una variabile simile è definita addirittura nel file di configurazione config/config.inc.php..

Come ho risolto? Sfruttando il fatto che Smarty, il gestore di template di Prestashop, è in grado di accedere alle variabili server side definite in php ed in particolare all’array $_SESSION.

Così ho aggiunto una riga al  config/config.inc.php per definire un’opportuna varibile di sessione:

$_SESSION['START_LOAD']=  microtime(true);

che ho letto all’interno del footer.tpl relativo al tema in uso nel front-end di Prestashop tramire la riga

<span>Caricamento pagina: {number_format(microtime(true) - $smarty.session.START_LOAD, 3, '.', '')} s</span>

opportumente aggiunta prima del tag <body>

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *