Commit a63221892928b68c0feda2272ad5282d61aa2f4e

Authored by Yarik
1 parent a1dded18

Lazyload

assets/LazyAsset.php 0 โ†’ 100755
  1 +<?php
  2 +
  3 +namespace artweb\artbox\assets;
  4 +
  5 +use yii\web\AssetBundle;
  6 +
  7 +/**
  8 + * Main frontend application asset bundle.
  9 + */
  10 +class LazyAsset extends AssetBundle
  11 +{
  12 + public $sourcePath = '@artweb/artbox/resources';
  13 + public $js = [
  14 + 'artbox-lazy.js',
  15 + ];
  16 +
  17 + public $depends = [
  18 + 'artweb\artbox\assets\LazyLoadAsset',
  19 + ];
  20 +
  21 +}
... ...
assets/LazyLoadAsset.php 0 โ†’ 100755
  1 +<?php
  2 +
  3 +namespace artweb\artbox\assets;
  4 +
  5 +use yii\web\AssetBundle;
  6 +
  7 +/**
  8 + * Main frontend application asset bundle.
  9 + */
  10 +class LazyLoadAsset extends AssetBundle
  11 +{
  12 + public $sourcePath = '@bower/jquery.lazyload';
  13 + public $js = [
  14 + 'jquery.lazyload.js',
  15 + ];
  16 +
  17 + public $depends = [
  18 + 'yii\web\JqueryAsset',
  19 + ];
  20 +
  21 +}
... ...
components/artboximage/ArtboxImageHelper.php
... ... @@ -53,14 +53,25 @@
53 53 * @param array|string $preset
54 54 * @param array $imgOptions
55 55 * @param int $quality
  56 + * @param bool $lazy
56 57 *
57 58 * @return string
58 59 * @see Html::img()
59 60 */
60   - public static function getImage($file, $preset, $imgOptions = [], $quality = 65)
  61 + public static function getImage($file, $preset, $imgOptions = [], $quality = 65, $lazy = false)
61 62 {
62 63 $preset_alias = is_array($preset) ? array_keys($preset)[ 0 ] : null;
63   - return Html::img(self::getImageSrc($file, $preset, $preset_alias, $quality), $imgOptions);
  64 + $src = self::getImageSrc($file, $preset, $preset_alias, $quality);
  65 + if($lazy) {
  66 + if(isset($imgOptions['class'])) {
  67 + $imgOptions['class'] = $imgOptions['class'].' artbox-lazy';
  68 + } else {
  69 + $imgOptions['class'] = 'artbox-lazy';
  70 + }
  71 + return Html::img('');
  72 + } else {
  73 + return Html::img($src, $imgOptions);
  74 + }
64 75 }
65 76  
66 77 /**
... ...
resources/artbox-lazy.js 0 โ†’ 100644
  1 +$(function() {
  2 + $('img.artbox-lazy').lazyload();
  3 + lazyThreshold();
  4 + lazyEvent();
  5 + lazyEffect();
  6 +});
  7 +function lazyThreshold() {
  8 + $.each($('img.artbox-lazy-threshold'), function(index, value) {
  9 + var threshold = 200;
  10 + var attribute = $(value).attr('data-threshold');
  11 + if(attribute) {
  12 + threshold = attribute;
  13 + }
  14 + this.lazyload({
  15 + threshold: threshold
  16 + });
  17 + });
  18 +}
  19 +function lazyEvent() {
  20 + $.each($('img.artbox-lazy-event'), function(index, value) {
  21 + var event = 'click';
  22 + var attribute = $(value).attr('data-event');
  23 + if(attribute) {
  24 + event = attribute;
  25 + }
  26 + this.lazyload({
  27 + event: event
  28 + });
  29 + });
  30 +}
  31 +function lazyEffect() {
  32 + $.each($('img.artbox-lazy-effect'), function(index, value) {
  33 + var effect = 'fadeIn';
  34 + var attribute = $(value).attr('data-effect');
  35 + if(attribute) {
  36 + effect = attribute;
  37 + }
  38 + this.lazyload({
  39 + effect: effect
  40 + });
  41 + });
  42 +}
0 43 \ No newline at end of file
... ...