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


Увеличить Размер Фото Товара При Отображении Таблицей


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 121

#121 yvn

yvn

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 94 сообщений

Отправлено 01 Июль 2017 - 21:57

Просмотр сообщенияVaccina (01 Июль 2017 - 07:57) писал:

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

Выполните инструкцию по изменению выбора модификаций с выпадающего списка на радио кнопки:
http://forum.storela...post__p__214519

После изменений вообще пропал выбор замера.
Пожалуйста дайте конкретные инструкции подходящие к моему шаблону.

#122 Vaccina

Vaccina

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

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

Отправлено 08 Июль 2017 - 06:21

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

Зайдите в раздел Сайт - Редактор шаблонов - Товар  найдите:
{% FOR goods_modifications_properties %}
<div class="goodsDataMainModificationsBlockProperty">
<!-- Выдаем списки со свойствами для модификаций, чтобы определить какую модификацию товара хочет пользователь -->
{% FOR values %}
<!-- Если это первый элемент в списке -->
{% IF goods_modifications_properties.values.first %}
<strong>{goods_modifications_properties.NAME}:</strong><br />
<select name="form[properties][]">
{% ENDIF %}
<option value="{goods_modifications_properties.values.ID}" {% IF goods_modifications_properties.values.SELECTED %}selected="selected"{% ENDIF %}>{goods_modifications_properties.values.NAME}</option>
<!-- Если это последний элемент в списке -->
{% IF goods_modifications_properties.values.last %}
</select>
{% ENDIF %}
{% ENDFOR %}
</div>
		 <div class="clear"></div>				
{goods_modifications_properties.index | is_divided("2","","")}
					 {% ENDFOR %}
  
замените на:
{% FOR goods_modifications_properties %}
<td class="goodsDataMainModificationsBlockProperty">
<!-- Выдаем списки со свойствами для модификаций, чтобы определить какую модификацию товара хочет пользователь -->
{% FOR values %}
								 <!-- Если это первый элемент в списке -->
								 {% IF goods_modifications_properties.values.first %}
															 <span class="goodsDataMainModificationsRadio">
															 <strong>{goods_modifications_properties.NAME}:</strong>
								 {% ENDIF %}
								 <div><input type="radio" name="form[properties][{goods_modifications_properties.ID}]" value="{goods_modifications_properties.values.ID}" {% IF goods_modifications_properties.values.SELECTED %}checked="checked"{% ENDIF %} /> {goods_modifications_properties.values.NAME}</div>
								 {% IF goods_modifications_properties.values.last %}
															 </span>
								 {% ENDIF %}
{% ENDFOR %}
</td>
{goods_modifications_properties.index | is_divided("2","</tr><tr>","")}
{% ENDFOR %}

Далее зайдите в шаблон main.js - найдите:
// Функция собирает свойства в строку, для определения модификации товара
function getSlugFromGoodsDataFormModificationsProperties(obj) {
var properties = new Array();
$(obj).each(function(i){
	 properties[i] = parseInt($(this).val());
});
return properties.sort(function(a,B){return a - b}).join('_');
}

var
// Запоминаем поля выбора свойств, для ускорения работы со значениями свойств
goodsDataProperties = $('form.goodsDataForm select[name="form[properties][]"]'),

// Запоминаем блоки с информацией по модификациям, для ускорения работы
goodsDataModifications = $('div.goodsDataMainModificationsList');

// Обновляет возможность выбора свойств модификации, для отключения возможности выбора по характеристикам модификации которой не существует.
function updateVisibility (y) {
// Проверяем в каждом соседнем поле выбора модификаций, возможно ли подобрать модификацию для указанных свойств
goodsDataProperties.each(function(j){
	 // Если мы сравниваем значения свойства не с самим собой, а с другим списком значений свойств
	 if( j != y ) {
	 // Проходим по всем значениям текущего свойства модификации товара
	 $(this).find('option').each(function(){
		 // Записываем временный массив свойств, которые будем использовать для проверки существования модификации
		 var checkProperties = new Array();
		 $(goodsDataProperties).each(function(i){
		 checkProperties[i] = parseInt($(this).val());
		 });
		 // Пытаемся найти модификацию соответствующую выбранным значениям свойств
		 checkProperties[j] = parseInt($(this).attr('value'));
		 // Собираем хэш определяющий модификацию по свойствам
		 slug = checkProperties.sort(function(a,B){return a - b}).join('_');
		 // Ищем модификацию по всем выбранным значениям свойств товара. Если модификации нет в возможном выборе, отмечаем потенциальное значение выбора как не доступное для выбора, т.к. такой модификации нет.
		 if(!goodsDataModifications.filter('[rel="'+slug+'"]').length) {
		 $(this).attr('disabled', true);
		 // Если выбрав данное значение свойства товара можно подобрать модификацию, то выделяем вариант выбора как доступный.
		 } else {
		 $(this).attr('disabled', false);
		 }
	 });
	 }
});
}
// Обновляем возможность выбора модификации товара по свойствам. Для тех свойств, выбор по которым не возможен, отключаем такую возможность.
// Проверяем возможность выбора на всех полях кроме первого, чтобы отключить во всех остальных варианты, которые не возможно выбрать
updateVisibility (0);
// Проверяем возможность выбора на всех полях кроме второго, чтобы в первом поле так же отключилась возможность выбора не существующих модификаций
updateVisibility (1);

//var goodsDataProperties = $('.goodsDataForm [name="form[properties][]"]');

// Изменение цены товара при изменении у товара свойства для модификации
goodsDataProperties.each(function(y){
$(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		 = parseFloat(modificationBlock.find('[name="price_now"]').val()),
		 modificationPriceNowFormated = modificationBlock.find('.price_now_formated').html(),
		 modificationPriceOld		 = parseFloat(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'),
		 goodsArtNumberBlock		 = $('.goodsDataMainModificationArtNumber'),
		 goodsArtNumber			 = goodsArtNumberBlock.find('span');
		 goodsCompareAddButton		 = $('.goodsDataCompareButton.add');
		 goodsCompareDeleteButton	 = $('.goodsDataCompareButton.delete');
		 goodsModDescriptionBlock	 = $('.goodsDataMainModificationsDescriptionBlock');
	
	 // Изменяем данные товара для выбранных параметров. Если нашлась выбранная модификация
	 if(modificationBlock.length) {
		 // Цена товара
		 goodsPriceNow.html(modificationPriceNowFormated);

		 // Старая цена товара
		 if(modificationPriceOld>modificationPriceNow) {
		 goodsPriceOld.html(modificationPriceOldFormated);
		 } else {
		 goodsPriceOld.html('');
		 }
	
		 // Есть ли товар есть в наличии
		 if(modificationRestValue>0) {
		 goodsAvailableTrue.show();
		 goodsAvailableFalse.hide();
		 // Если товара нет в наличии
		 } else {
		 goodsAvailableTrue.hide();
		 goodsAvailableFalse.show();
		 }
		 // Если товар есть в списке сравнения
		 if(modificationIsHasInCompareList>0) {
		 goodsCompareAddButton.hide();
		 goodsCompareDeleteButton.show();
		 // Если товара нет в списке сравнения
		 } else {
		 goodsCompareAddButton.show();
		 goodsCompareDeleteButton.hide();
		 }
	
		 // Покажем артикул модификации товара, если он указан
		 if(modificationArtNumber.length>0) {
		 goodsArtNumberBlock.show();
		 goodsArtNumber.html(modificationArtNumber);
		 // Скроем артикул модификации товара, если он не указан
		 } else {
		 goodsArtNumberBlock.hide();
		 goodsArtNumber.html('');
		 }

		 // Описание модификации товара. Покажем если оно есть, спрячем если его у модификации нет
		 if(modificationDescription.length > 0) {
		 goodsModDescriptionBlock.show().html('<div>' + modificationDescription + '</div>');
		 } else {
		 goodsModDescriptionBlock.hide().html();
		 }
	
	
		 // Идентификатор товарной модификации
		 goodsModificationId.val(modificationId);
	 } else {
		 alert('К сожалению сейчас не получается подобрать модификацию соответствующую выбранным параметрам.');
	 }

	 // Обновляем возможность выбора другой модификации для текущих значений свойств модификации товара.
	 updateVisibility(y);
});
});



замените на:
// Функция собирает свойства в строку, для определения модификации товара
function getSlugFromGoodsDataFormModificationsProperties(obj) {
							 var properties = new Array();
							 var reset_arr = new Array();
							 $(obj).find('input[type="radio"]').each(function(i){
								 if($(this).is(':checked')){
															 properties[i] = parseInt($(this).val());}
							 });
							 for(var i in properties) {
								 if(properties[i]) {
								 reset_arr.push(properties[i]);
								 }
							 }
							 return reset_arr.sort(function(a,B){return a - b}).join('_');
}


var
							 // Запоминаем поля выбора свойств, для ускорения работы со значениями свойств
							 goodsDataProperties = $('.goodsDataMainModificationsBlock .goodsDataMainModificationsRadio'),
				
							 // Запоминаем блоки с информацией по модификациям, для ускорения работы
							 goodsDataModifications = $('div.goodsDataMainModificationsList');


// Обновляет возможность выбора свойств модификации, для отключения возможности выбора по характеристикам модификации которой не существует.
function updateVisibility (y) {
							 // Проверяем в каждом соседнем поле выбора модификаций, возможно ли подобрать модификацию для указанных свойств
							 goodsDataProperties.each(function(j){
								 // Если мы сравниваем значения свойства не с самим собой, а с другим списком значений свойств
								 if( j != y ) {
															 // Проходим по всем значениям текущего свойства модификации товара
															 $(this).find('input[type="radio"]').each(function(){
																 // Записываем временный массив свойств, которые будем использовать для проверки существования модификации
																 //var checkProperties = new Array();
																 /*$(goodsDataProperties).each(function(i){
																							 if($(this).is(':checked'))
																								 checkProperties[i] = parseInt($(this).val());
																 });*/
																 // Пытаемся найти модификацию соответствующую выбранным значениям свойств
																 //checkProperties[j] = parseInt($(this).attr('value'));
																 // Собираем хэш определяющий модификацию по свойствам
																 //slug = checkProperties.sort(function(a,B){return a - b}).join('_');
slug = getSlugFromGoodsDataFormModificationsProperties(goodsDataProperties);
																 // Ищем модификацию по всем выбранным значениям свойств товара. Если модификации нет в возможном выборе, отмечаем потенциальное значение выбора как не доступное для выбора, т.к. такой модификации нет.
																 if(!goodsDataModifications.filter('[rel="'+slug+'"]').length) {
																 $(this).attr('disabled', 'disabled');
																 // Если выбрав данное значение свойства товара можно подобрать модификацию, то выделяем вариант выбора как доступный.
																 } else {
																							 $(this).removeAttr('disabled');
																 }
															 });
								 }
							 });
}
// Обновляем возможность выбора модификации товара по свойствам. Для тех свойств, выбор по которым не возможен, отключаем такую возможность.
updateVisibility (0);

// Изменение цены товара при изменении у товара свойства для модификации
goodsDataProperties.each(function(y){
							 $(this).find('input[type="radio"]').click(function(){
								 var slug = getSlugFromGoodsDataFormModificationsProperties(goodsDataProperties),
																 modificationBlock																	 = goodsDataModifications.filter('[rel="'+slug+'"]'),
																 modificationId																															 = parseInt(modificationBlock.find('[name="id"]').val()),
																 modificationArtNumber		 = modificationBlock.find('[name="art_number"]').val(),
																 modificationPriceNow						 = parseFloat(modificationBlock.find('[name="price_now"]').val()),
																 modificationPriceNowFormated = modificationBlock.find('.price_now_formated').html(),
																 modificationPriceOld						 = parseFloat(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'),
																 goodsArtNumberBlock								 = $('.goodsDataMainModificationArtNumber'),
																 goodsArtNumber																															 = goodsArtNumberBlock.find('span');
																 goodsCompareAddButton		 = $('.goodsDataCompareButton.add');
																 goodsCompareDeleteButton					 = $('.goodsDataCompareButton.delete');
																 goodsModDescriptionBlock					 = $('.goodsDataMainModificationsDescriptionBlock');
							
							
								 // Изменяем данные товара для выбранных параметров. Если нашлась выбранная модификация
								 if(modificationBlock.length) {
																 // Цена товара
																 goodsPriceNow.html(modificationPriceNowFormated);

																 // Старая цена товара
																 if(modificationPriceOld>modificationPriceNow) {
																 goodsPriceOld.html(modificationPriceOldFormated);
																 } else {
																 goodsPriceOld.html('');
																 }
														
																 // Есть ли товар есть в наличии
																 if(modificationRestValue>0) {
																 goodsAvailableTrue.show();
																 goodsAvailableFalse.hide();
																 // Если товара нет в наличии
																 } else {
																 goodsAvailableTrue.hide();
																 goodsAvailableFalse.show();
																 }
																 // Если товар есть в списке сравнения
																 if(modificationIsHasInCompareList>0) {
																 goodsCompareAddButton.hide();
																 goodsCompareDeleteButton.show();
																 // Если товара нет в списке сравнения
																 } else {
																 goodsCompareAddButton.show();
																 goodsCompareDeleteButton.hide();
																 }
														
																 // Покажем артикул модификации товара, если он указан
																 if(modificationArtNumber.length>0) {
																 goodsArtNumberBlock.show();
																 goodsArtNumber.html(modificationArtNumber);
																 // Скроем артикул модификации товара, если он не указан
																 } else {
																 goodsArtNumberBlock.hide();
																 goodsArtNumber.html('');
																 }
																 // Описание модификации товара. Покажем если оно есть, спрячем если его у модификации нет
																 if(modificationDescription.length > 0) {
																 goodsModDescriptionBlock.show().html('<div>' + modificationDescription + '</div>');
																 } else {
																 goodsModDescriptionBlock.hide().html();
																 }
														
														
																 // Идентификатор товарной модификации
																 goodsModificationId.val(modificationId);
																 window.location.hash = '?modification='+modificationId;
								 } else {
																 // Отправим запись об ошибке на сервер
																 sendError('no modification by slug '+slug);
																 alert('К сожалению сейчас не получается подобрать модификацию соответствующую выбранным параметрам.');
								 }
							
								 // Обновляем возможность выбора другой модификации для текущих значений свойств модификации товара.
								 updateVisibility(y);
							 });
});


Далее зайдите в style.css - найдите:
.goodsDataMainModificationsBlock{background: #f3f1e6;padding: 10px;margin-top: 1em;}

после него пропишите:
.goodsDataMainModificationsBlock .goodsDataMainModificationsRadio div{display: inline-block;}
.goodsDataMainModificationsBlock .goodsDataMainModificationsRadio div input{float:none;}

Мужские приталенные рубашки стрейч BLACK STONE.png




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

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