Buenas quería compartirles un tutorial de como utilizar lazy load en los temas de nuestro foros.
¿Qué es lazy load ?Según el autor del script:Lazy Load is delays loading of images in long web pages. Images outside of viewport are not loaded until user scrolls to them. This is opposite of image preloading.
Using Lazy Load on long web pages will make the page load faster. In some cases it can also help to reduce server load.
En definitiva lo que hace es cargar las imágenes de nuestra pagina solo si están en una posición visible esto ahorrara muchísimos recursos de nuestro sitio y hará que las paginas cargue mucho mas rápido.
Muchas veces nos encontramos con paginas de tutoriales o de respuesta tras respuesta llena de imágenes y sucede que sin el script estas imágenes cargan aunque nosotros no lleguemos a verlas lo que hace que el rendimiento de nuestro sitio sea muy lento.
Demo:http://www.appelsiini.net/projects/lazyload/enabled.htmlLa librería:Sobre la librería no voy a comentar mucho el unico requerimiento es que usa JQuery para funcionar.
Sitio web: http://www.appelsiini.net/projects/lazyloadLibrería minificada: https://github.com/tuupola/jquery_lazyload/blob/master/jquery.lazyload.min.jsIntegración con SMF:Vamos con lo que realmente nos importa como bien dice la
documentacion del script lo primero que tenemos que hacer es importar las librerías, para eso tenemos que editar el archivo index.template para agregar los javascript en la cabecera de nuestro foro.
Primero que nada guardamos el archivo jquery.lazyload.min.js en la carpeta: Themes/default/scripts/
Luego editamos el archivo
Themes/{tu-theme}/index.template.phpBuscamos:<script type="text/javascript" src="', $settings['default_theme_url'], '/scripts/script.js?fin20"></script>
Y agregamos antes: <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js" type="text/javascript"></script>
<script src="', $settings['default_theme_url'], '/scripts/jquery.lazyload.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
$("img.lazy").lazyload();
});
</script>
En el código verán que agregamos las librerías y que ademas en la función ready de jquery enlazamos a todas las imágenes que tengan la clase ".lazy" con la función lazyload.
Por lo tanto lo siguiente es agregar la clase lazy a las imágenes y ademas, según la documentación, agregarle un atributo data-original a las imágenes que es el que buscara el script.
Editamos el archivo
Sources/Subs.phpBuscamos:'content' => '<img src="$1" alt="{alt}"{width}{height} class="bbc_img resized" />',
Reemplazamos por:'content' => '<img data-original="$1" alt="{alt}"{width}{height} class="bbc_img resized lazy" />',
Buscamos:'content' => '<img src="$1" alt="" class="bbc_img" />',
Reemplazamos por:'content' => '<img data-original="$1" alt="" class="bbc_img lazy" />',
Con eso el script ya estaría funcionando espero que lo prueben y también que jueguen con esto porque el script tiene mas opciones, pueden ponerle un placeholder especifico para cuando esta por cargar la imagen, pueden cambiar el efecto que tiene de fade, pueden usar eventos como el click para cargar la imagen y varias cosas mas.
El script es muy recomendado yo lo use en varios sitios profesionales que tuve que desarrollar y realmente nunca me fallo y por el contrario me ayudo a bajar mucho los tiempos de carga de sitios institucionales que utilizan muchas imágenes (la mayor parte algo pesadas).
Aclaraciones:El tutorial fue desarrollado para una instalación limpia de SMF puede que algunas modificaciones que tengan que hacer no las encuentren porque ya fueron modificadas por otros mods pero la esencia es esta y si tienen problemas deberán interpretar cada caso.
SI tienen algún mod que utilice jquery no lo vuelvan a importar y solo tengan presente que tanto la librería como el script aparezcan después del import de jquery.
Saludos!