Commit a63221892928b68c0feda2272ad5282d61aa2f4e
1 parent
a1dded18
Lazyload
Showing
4 changed files
with
97 additions
and
2 deletions
Show diff stats
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 | +} |
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,14 +53,25 @@ | ||
53 | * @param array|string $preset | 53 | * @param array|string $preset |
54 | * @param array $imgOptions | 54 | * @param array $imgOptions |
55 | * @param int $quality | 55 | * @param int $quality |
56 | + * @param bool $lazy | ||
56 | * | 57 | * |
57 | * @return string | 58 | * @return string |
58 | * @see Html::img() | 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 | $preset_alias = is_array($preset) ? array_keys($preset)[ 0 ] : null; | 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 | /** |
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 | \ No newline at end of file | 43 | \ No newline at end of file |