public function run() { $images = GalleryImages::find()->where(['gallery_groups_id' => $this->gallery_groups_id])->orderBy('seq')->all(); if (!$images) { return false; } foreach ($images as $i => $image) { $items_large[] = Html::a(Html::img($image->large, ['class' => 'img-rounded']), $image->large, ['rel' => 'gl-fancybox']); $items_small[] = Html::img($image->small, ['class' => 'gl-slider-prev']); } echo Slick::widget(['itemContainer' => 'div', 'containerOptions' => ['class' => 'gl-slider-for'], 'items' => $items_large, 'clientOptions' => ['asNavFor' => '.gl-slider-nav', 'slidesToShow' => 1, 'slidesToScroll' => 1, 'arrows' => false, 'fade' => true]]); echo Slick::widget(['itemContainer' => 'div', 'containerOptions' => ['class' => 'gl-slider-nav' . (count($images) > 1 ? '' : ' hide')], 'items' => $items_small, 'clientOptions' => ['asNavFor' => '.gl-slider-for', 'slidesToShow' => count($images), 'slidesToScroll' => count($images), 'dots' => false, 'arrows' => false, 'autoplay' => false, 'focusOnSelect' => true]]); echo FancyBox::widget(['target' => 'a[rel=gl-fancybox]', 'helpers' => true, 'mouse' => true, 'config' => ['maxWidth' => '90%', 'maxHeight' => '90%', 'playSpeed' => 4000, 'padding' => 0, 'fitToView' => false, 'width' => '70%', 'height' => '70%', 'autoSize' => false, 'closeClick' => false, 'openEffect' => 'elastic', 'closeEffect' => 'elastic', 'prevEffect' => 'elastic', 'nextEffect' => 'elastic', 'closeBtn' => false, 'openOpacity' => true, 'helpers' => ['title' => ['type' => 'float'], 'buttons' => [], 'thumbs' => ['width' => 68, 'height' => 50], 'overlay' => ['css' => ['background' => 'rgba(0, 0, 0, 0.8)']]]]]); $view = $this->view; GalleryAdAsset::register($view); }
/** * @return \yii\db\ActiveQuery */ public function getGalleryImage() { return $this->hasOne(GalleryImages::className(), ['id' => 'gallery_images_id']); }
private function addImage($item, $src_gallery_types_id, $links_id, $shop_goods_id = null) { $gallery_groups = array(); foreach ($item as $image_sxe) { $basename_src = basename(strval($image_sxe->{'ПутьКИзображению'})); if (!$basename_src) { continue; } $src_image = pathinfo($this->import_file)['dirname'] . '/' . strval($image_sxe->{'ПутьКИзображению'}); if (!is_file($src_image)) { continue; } $gallery_types_id = false; $alt = ''; foreach (Yii::$app->params['shop']['gallery'] as $name => $id) { if (!$gallery_types_id && strripos($basename_src, '_' . $name) !== false) { $gallery_types_id = $id; preg_match('/\\[(.+)\\]/', $basename_src, $matches); $alt = isset($matches[1]) ? $matches[1] : ''; } } if (!$gallery_types_id) { $gallery_types_id = $src_gallery_types_id; } if (GalleryTypes::findOne($gallery_types_id)) { $gallery_groups[$gallery_types_id][] = ['name' => $basename_src, 'src_image' => $src_image, 'alt' => $alt, 'default' => $image_sxe->{'ОсновноеИзображение'} == 1 ? 1 : 0]; } } if (!$gallery_groups) { return false; } $link = Links::findOne($links_id); foreach ($gallery_groups as $gallery_types_id => $images) { $gallery_group = false; if ($shop_goods_id) { $good_gallery = ShopGoodGallery::findOne(['shop_goods_id' => $shop_goods_id, 'gallery_types_id' => $gallery_types_id]); if (!$good_gallery) { $gallery_group = new GalleryGroups(); $gallery_group->gallery_types_id = $gallery_types_id; $gallery_group->save(); $good_gallery = new ShopGoodGallery(); $good_gallery->shop_goods_id = $shop_goods_id; $good_gallery->gallery_types_id = $gallery_types_id; $good_gallery->gallery_groups_id = $gallery_group->id; $good_gallery->save(); } else { $gallery_group = GalleryGroups::findOne($good_gallery->gallery_groups_id); } } elseif (in_array($gallery_types_id, Yii::$app->params['shop']['galleryLink'])) { if (!$link->gallery_images_id) { $gallery_group = new GalleryGroups(); $gallery_group->gallery_types_id = $gallery_types_id; $gallery_group->save(); } else { $gallery_group = GalleryGroups::findOne($link->galleryImage->gallery_groups_id); } } if ($gallery_group) { foreach ($images as $index => $image) { $gallery_image = GalleryImages::findOne(['gallery_groups_id' => $gallery_group->id, 'name' => $image['name']]); if (!$gallery_image) { $new_image = $this->saveImage($image['src_image'], $gallery_types_id, $gallery_group->id); if (isset($new_image['small']) && isset($new_image['large'])) { $gallery_image = new GalleryImages(); $gallery_image->gallery_groups_id = $gallery_group->id; $gallery_image->small = $new_image['small']; $gallery_image->large = $new_image['large']; $gallery_image->name = $image['name']; $gallery_image->alt = $image['alt']; $gallery_image->seq = $new_image['seq']; $gallery_image->save(); } } else { if ($gallery_image->alt != $image['alt']) { $gallery_image->alt = $image['alt']; $gallery_image->update(); } } if ($image['default'] == 1) { if ($gallery_group->gallery_images_id != $gallery_image->id) { $gallery_group->gallery_images_id = $gallery_image->id; $gallery_group->update(); } if ($gallery_image->id && $link->gallery_images_id != $gallery_image->id) { $link->gallery_images_id = $gallery_image->id; $link->update(); } } } $gallery_images = GalleryImages::find()->where(['gallery_groups_id' => $gallery_group->id])->orderBy(['seq' => SORT_ASC])->all(); $resort_images = false; foreach ($gallery_images as $gallery_image) { $delete_image = true; foreach ($images as $index => $image) { if ($image['name'] == $gallery_image->name) { $delete_image = false; } } if ($delete_image) { $resort_images = true; GalleryImages::findOne($gallery_image->id)->delete(); unlink(Yii::getAlias('@frontend/web') . $gallery_image->small); unlink(Yii::getAlias('@frontend/web') . $gallery_image->large); } } if ($resort_images) { $gallery = new Gallery(); $gallery->resortImages($gallery_group->id); } } } }
/** * @return \yii\db\ActiveQuery */ public function getGalleryImages() { return $this->hasMany(GalleryImages::className(), ['gallery_groups_id' => 'id']); }