Иногда нужно в карточке товара выводить фото товара и дополнительные фото (галерея)
В инфоблоке товара добавляем свойства названием MORE_PHOTO типа свойства выберем файл (если нет такого)
В шаблоне карточке товара /local/templates/НАЗВАНИЕ_ШАБЛОНА_САЙТА/components/bitrix/catalog/НАЗВАНИЕ_ШАБЛОНА_КОМПОНЕНТА/bitrix/catalog.element/.default/template.phpну или место /local/ у Вас может быть /bitrix/
Пишем следующий код, который циклом выводит фото из свойства MORE_PHOTO через функцию CFile::ResizeImageGet изменяем размеры превью картинок
<div class="product-images">
< ? //основная фото товара?>
<div id="main-image" class="product-image">
<img src="< ? echo $arResult['DETAIL_PICTURE']['SRC']?>" alt="<?echo $strAlt?>" title="<?echo $strTitle?>">
</div>
<? //Дополнительные фото товара (галерея)?>
< ? if(!empty($arResult['MORE_PHOTO'])):?>
<div class="product-gallery">
<a class="gallery-image" href="<? echo $arResult['DETAIL_PICTURE']['SRC']?>">
<img src="<? echo $arResult['DETAIL_PICTURE']['SRC']?>">
</a>
< ? foreach($arResult['MORE_PHOTO'] as $img):?>
< ? $thumb = CFile::ResizeImageGet($img, Array("width" => 110, "height" => 110) );?>
<a class="gallery-image" href="<? echo $img['SRC']?>"><img src="<? echo $thumb['src']?>"></a>
< ? endforeach?>
</div>
< ? endif ?>
</div>
CSS
.product-gallery {
width: 100%;
float: left;
}
.product-gallery .gallery-image {
display: block;
width: 105px;
float: left;
margin-right: 10px;
text-align: center;
}
JS - Jquery для переключение фото (изначально у вас должен быть подключен Jquer)
$(document).ready(function(){
$('.product-gallery a').click(function(e){
var img = $(this).attr("href");
$("#main-image img").attr("src", img );
e.preventDefault();
return false;
});
});