Перейти к содержимому


Смена Главного Фото При Изменении Модификации


  • Авторизуйтесь для ответа в теме
В этой теме нет ответов

#1 Vaccina

Vaccina

    Активный участник

  • Модераторы
  • 24 353 сообщений

Отправлено 11 Сентябрь 2021 - 01:15

Здравствуйте.

Зайдите в раздел Сайт - Редактор шаблонов - Товар - найдите:
		 <!-- Данные по модификациям для текущей товарной позиции -->
		 {% FOR goods_modifications %}
		 <div class="goodsDataMainModificationsList" rel="{goods_modifications.PROPERTIES_SLUG}">
			 <input type="hidden" name="id" value="{goods_modifications.ID}" />
			 <input type="hidden" name="art_number" value="{goods_modifications.ART_NUMBER}" />
			 <input type="hidden" name="price_now" value="{goods_modifications.PRICE_NOW}" />
			 <div class="price_now_formated" style="display:none">{goods_modifications.PRICE_NOW | money_format}</div>
			 <input type="hidden" name="price_old" value="{% IF goods_modifications.PRICE_NOW_WITHOUT_DISCOUNT>goods_modifications.PRICE_NOW %}{goods_modifications.PRICE_NOW_WITHOUT_DISCOUNT}{% ELSE %}{goods_modifications.PRICE_OLD}{% ENDIF %}" />
			 <div class="price_old_formated" style="display:none">{% IF goods_modifications.PRICE_NOW_WITHOUT_DISCOUNT>goods_modifications.PRICE_NOW %}{goods_modifications.PRICE_NOW_WITHOUT_DISCOUNT | money_format}{% ELSE %}{goods_modifications.PRICE_OLD | money_format}{% ENDIF %}</div>
			 <input type="hidden" name="rest_value" value="{goods_modifications.REST_VALUE}" />
			 <input type="hidden" name="measure_id" value="{goods_modifications.MEASURE_ID}" />
			 <input type="hidden" name="measure_name" value="{goods_modifications.MEASURE_NAME}" />
			 <input type="hidden" name="measure_desc" value="{goods_modifications.MEASURE_DESC}" />
			 <input type="hidden" name="measure_precision" value="{goods_modifications.MEASURE_PRECISION}" />
			 <input type="hidden" name="is_has_in_compare_list" value="{goods_modifications.IS_HAS_IN_COMPARE_LIST}" />
			 <div class="description" style="display:none" itemprop="description">{goods_modifications.DESCRIPTION}</div>
		 </div>
		 {% ENDFOR %}
     
     
замените на:
		 <!-- Данные по модификациям для текущей товарной позиции -->
		 {% FOR goods_modifications %}
		 <div class="goodsDataMainModificationsList" rel="{goods_modifications.PROPERTIES_SLUG}">
			 <input type="hidden" name="id" value="{goods_modifications.ID}" />
			 <input type="hidden" name="art_number" value="{goods_modifications.ART_NUMBER}" />
			 <input type="hidden" name="price_now" value="{goods_modifications.PRICE_NOW}" />
			 <input type="hidden" name="goods_mod_image_id" value="{goods_modifications.GOODS_MOD_IMAGE_ID}" />
			 <div class="price_now_formated" style="display:none">{goods_modifications.PRICE_NOW | money_format}</div>
			 <input type="hidden" name="price_old" value="{% IF goods_modifications.PRICE_NOW_WITHOUT_DISCOUNT>goods_modifications.PRICE_NOW %}{goods_modifications.PRICE_NOW_WITHOUT_DISCOUNT}{% ELSE %}{goods_modifications.PRICE_OLD}{% ENDIF %}" />
			 <div class="price_old_formated" style="display:none">{% IF goods_modifications.PRICE_NOW_WITHOUT_DISCOUNT>goods_modifications.PRICE_NOW %}{goods_modifications.PRICE_NOW_WITHOUT_DISCOUNT | money_format}{% ELSE %}{goods_modifications.PRICE_OLD | money_format}{% ENDIF %}</div>
			 <input type="hidden" name="rest_value" value="{goods_modifications.REST_VALUE}" />
			 <input type="hidden" name="measure_id" value="{goods_modifications.MEASURE_ID}" />
			 <input type="hidden" name="measure_name" value="{goods_modifications.MEASURE_NAME}" />
			 <input type="hidden" name="measure_desc" value="{goods_modifications.MEASURE_DESC}" />
			 <input type="hidden" name="measure_precision" value="{goods_modifications.MEASURE_PRECISION}" />
			 <input type="hidden" name="is_has_in_compare_list" value="{goods_modifications.IS_HAS_IN_COMPARE_LIST}" />
			 <div class="description" style="display:none" itemprop="description">{goods_modifications.DESCRIPTION}</div>
		 </div>
		 {% ENDFOR %}
     
Далее найдите:
	 <ul class="thumblist">
	 {% FOR goods_images %}
		 <li><a href="#" data-image="{goods_images.LARGE}" title="{goods_images.NAME}" data="{goods_images.ID}" class="thumblisticon"><img src="{goods_images.ICON}" alt="{goods_images.NAME}" class="goods-image-icon" itemprop="image" /></a></li>
	 {% ENDFOR %}
	 </ul>

замените на:
	 <ul class="thumblist">
	 {% FOR goods_images %}
		 <li><a href="{goods_images.LARGE}" data-image-id="{goods_images.ID}" data-image="{goods_images.LARGE}" title="{goods_images.NAME}" data="{goods_images.ID}" class="thumblisticon"><img src="{goods_images.ICON}" alt="{goods_images.NAME}" class="goods-image-icon" itemprop="image" /></a></li>
	 {% ENDFOR %}
	 </ul>
     
     
Далее зайдите в main.js - найдите:
 // Изменение цены товара при изменении у товара свойства для модификации
goodsDataProperties.each(function(){
$(this).change(function(){
	 var slug = getSlugFromGoodsDataFormModificationsProperties(goodsDataProperties),
	 modificationBlock			 = $('.goodsDataMainModificationsList[rel="'+slug+'"]'),
	 modificationId			 = parseInt(modificationBlock.find('[name="id"]').val()),
	 modificationArtNumber		 = modificationBlock.find('[name="art_number"]').val(),
	 modificationPriceNow		 = parseInt(modificationBlock.find('[name="price_now"]').val()),
	 modificationPriceNowFormated = modificationBlock.find('.price_now_formated').html(),
	 modificationPriceOld		 = parseInt(modificationBlock.find('[name="price_old"]').val()),
	 modificationPriceOldFormated = modificationBlock.find('.price_old_formated').html(),
	 modificationRestValue		 = parseFloat(modificationBlock.find('[name="rest_value"]').val()),
	 modificationDescription	 = modificationBlock.find('.description').html(),
	 modificationMeasureId		 = parseInt(modificationBlock.find('[name="measure_id"]').val()),
	 modificationMeasureName	 = modificationBlock.find('[name="measure_name"]').val(),
	 modificationMeasureDesc	 = modificationBlock.find('[name="measure_desc"]').val(),
	 modificationMeasurePrecision = modificationBlock.find('[name="measure_precision"]').val(),
	 modificationIsHasInCompareList= modificationBlock.find('[name="is_has_in_compare_list"]').val(),
	 goodsModificationId		 = $('.goodsDataMainModificationId'),
	 goodsPriceNow				 = $('.goodsDataMainModificationPriceNow'),
	 goodsPriceOld				 = $('.goodsDataMainModificationPriceOld'),
	 goodsAvailable			 = $('.goodsDataMainModificationAvailable'),
	 goodsAvailableTrue		 = goodsAvailable.find('.available-true'),
	 goodsAvailableFalse		 = goodsAvailable.find('.available-false'),
	 goodsAvailableAddCart		 = $('.add-to-form .add-to-cart'),
	 goodsAvailableQty			 = $('.add-to-form .wrap-qty'),
	 goodsArtNumberBlock		 = $('.goodsDataMainModificationArtNumber'),
	 goodsArtNumber			 = goodsArtNumberBlock.find('span');
	 goodsCompareAddButton		 = $('.goodsDataCompareButton.add');
	 goodsCompareDeleteButton	 = $('.goodsDataCompareButton.delete');
	 goodsModDescriptionBlock	 = $('.goodsDataMainModificationsDescriptionBlock');
	
	 // Изменяем данные товара для выбранных параметров. Если нашлась выбранная модификация
	 if(modificationBlock.length) {
	 // Цена товара
	 goodsPriceNow.html('<span class="price">' + modificationPriceNowFormated + '</span>');
  
замените на:
 // Меняет главное изображение товара на изображение с идентификатором goods_mod_image_id
function changePrimaryGoodsImage(goods_mod_image_id) {
// Если не указан идентификатор модификации товара, значит ничего менять не нужно.
if(1 > goods_mod_image_id) {
	 return true;
}
var
	 // Блок с изображением выбранной модификации товара
	 goodsModImageBlock = $('.thumblist a[data-image-id="' + parseInt(goods_mod_image_id) + '"]'),
	 // Блок, в котором находится главное изображение товара
	 MainImageBlock = $('#zoom1'),
	 // Изображение модификации товара, на которое нужно будет изменить главное изображение товара.
	 MediumImageUrl = goodsModImageBlock.attr('href'),
	 // Главное изображение, в которое будем вставлять новое изображение
	 MainImage = MainImageBlock.find('img.goods-image-medium'),
	 // В этом объекте хранится идентификатор картинки главного изображения для коректной работы галереи изображений
	 MainImageInfo = $('div.goodsImageZoom:eq(0)')
;
// Если не удалось найти блок, в котором находится главное изображение товара
if(!MainImageBlock.length) {
	 console.log("GoodsModImage error: MainImageBlock not found");
	 return false;
}
// Если не удалось найти главное изображение товара
if(!MainImage.length) {
	 console.log("GoodsModImage error: MainImage not found");
	 return false;
}
// Если не удалось найти главное изображение товара
if(!goodsModImageBlock.length) {
	 console.log("GoodsModImage error: goodsModImageBlock not found");
	 return false;
}
// Если не удалось найти URL изображения для модификации товара
if(typeof MediumImageUrl === 'undefined') {
	 console.log("GoodsModImage error: MediumImageUrl not found");
	 return false;
}
// Если изображение модификации товара найдено - изменяем главное изображение
MainImage.attr('src', MediumImageUrl);
MainImageInfo.attr('data', parseInt(goods_mod_image_id));

return true;
}

// Изменение цены товара при изменении у товара свойства для модификации
goodsDataProperties.each(function(){
$(this).change(function(){
	 var slug = getSlugFromGoodsDataFormModificationsProperties(goodsDataProperties),
	 modificationBlock			 = $('.goodsDataMainModificationsList[rel="'+slug+'"]'),
	 modificationGoodsModImageId = modificationBlock.find('[name="goods_mod_image_id"]').val(),
	 modificationId			 = parseInt(modificationBlock.find('[name="id"]').val()),
	 modificationArtNumber		 = modificationBlock.find('[name="art_number"]').val(),
	 modificationPriceNow		 = parseInt(modificationBlock.find('[name="price_now"]').val()),
	 modificationPriceNowFormated = modificationBlock.find('.price_now_formated').html(),
	 modificationPriceOld		 = parseInt(modificationBlock.find('[name="price_old"]').val()),
	 modificationPriceOldFormated = modificationBlock.find('.price_old_formated').html(),
	 modificationRestValue		 = parseFloat(modificationBlock.find('[name="rest_value"]').val()),
	 modificationDescription	 = modificationBlock.find('.description').html(),
	 modificationMeasureId		 = parseInt(modificationBlock.find('[name="measure_id"]').val()),
	 modificationMeasureName	 = modificationBlock.find('[name="measure_name"]').val(),
	 modificationMeasureDesc	 = modificationBlock.find('[name="measure_desc"]').val(),
	 modificationMeasurePrecision = modificationBlock.find('[name="measure_precision"]').val(),
	 modificationIsHasInCompareList= modificationBlock.find('[name="is_has_in_compare_list"]').val(),
	 goodsModificationId		 = $('.goodsDataMainModificationId'),
	 goodsPriceNow				 = $('.goodsDataMainModificationPriceNow'),
	 goodsPriceOld				 = $('.goodsDataMainModificationPriceOld'),
	 goodsAvailable			 = $('.goodsDataMainModificationAvailable'),
	 goodsAvailableTrue		 = goodsAvailable.find('.available-true'),
	 goodsAvailableFalse		 = goodsAvailable.find('.available-false'),
	 goodsAvailableAddCart		 = $('.add-to-form .add-to-cart'),
	 goodsAvailableQty			 = $('.add-to-form .wrap-qty'),
	 goodsArtNumberBlock		 = $('.goodsDataMainModificationArtNumber'),
	 goodsArtNumber			 = goodsArtNumberBlock.find('span');
	 goodsCompareAddButton		 = $('.goodsDataCompareButton.add');
	 goodsCompareDeleteButton	 = $('.goodsDataCompareButton.delete');
	 goodsModDescriptionBlock	 = $('.goodsDataMainModificationsDescriptionBlock');
	
	 // Изменяем данные товара для выбранных параметров. Если нашлась выбранная модификация
	 if(modificationBlock.length) {
	 // Обновляем изображение модификации товара, если оно указано
	 changePrimaryGoodsImage(modificationGoodsModImageId);
	 // Цена товара
	 goodsPriceNow.html('<span class="price">' + modificationPriceNowFormated + '</span>');





Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных