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


Не Показывать Нулевые Модификации


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

#1 fury21

fury21

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

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

Отправлено 24 Июль 2012 - 14:04

У меня из модификаций только размер. Можно как то сделать что бы в выпадающем списке показывались только те размеры которые есть в наличии, т.е. больше 0. ??

#2 Vaccina

Vaccina

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

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

Отправлено 24 Июль 2012 - 20:42

Не совсем вас понимаю. Вы имеете в виду режим администрирования? Думаю что такое реализовать не получиться. Необходимо участие разработчиков в данном случае.

#3 fury21

fury21

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

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

Отправлено 24 Июль 2012 - 21:58

Представим у товара 3 модификации размера: 35,36,37
36 размер закончился, остались 35 и 36, но не смотря на это сайт все равно покажет 36р, хоть его и нету. Можно ли сделать так что бы не показывались размеры которые закончились?

#4 Vaccina

Vaccina

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

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

Отправлено 25 Июль 2012 - 19:20

Вероятно у вас не обновленный файла main.js, так как в текущем варианте, отсутствующие модификации блокируются, и их нельзя выбрать.

Вам необходимо обновить ваш 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);
  
  // Изменение цены товара при изменении у товара свойства для модификации
  goodsDataProperties.each(function(y){
	$(this).change(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);
	});
  });


#5 fury21

fury21

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

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

Отправлено 26 Июль 2012 - 21:38

У меня этот файл уже был в ручную модифицирован! Я боюсь что либо сам менять, могу я Вас попросить это сделать?

#6 Vaccina

Vaccina

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

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

Отправлено 27 Июль 2012 - 19:52

Пожалуйста, приложите ваш файл main.js

#7 fury21

fury21

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

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

Отправлено 28 Июль 2012 - 18:47

// Отправляет ошибку на сервер, для того чтобы служба тех поддержки могла разобраться в проблеме как можно быстрее.
function sendError (desc, page, line) {
  var img=document.createElement('img');
  img.src = 'http://storeland.ru/error/js?desc='+encodeURIComponent(desc)+'&page='+encodeURIComponent(window.location)+'&line=0';
  img.style.position = 'absolute';
  img.style.top = '-9999px';

  try { document.getElementsByTagName('head').appendChild(img) } catch (e){}
  return false;
}

// Форматирует цену
function number_format(number,decimals,dec_point,thousands_sep){var n=number,prec=decimals;var toFixedFix=function(n,prec){var k=Math.pow(10,prec);return(Math.round(n*k)/k).toString();};n=!isFinite(+n)?0:+n;prec=!isFinite(+prec)?0:Math.abs(prec);var sep=(typeof thousands_sep==='undefined')?',':thousands_sep;var dec=(typeof dec_point==='undefined')?'.':dec_point;var s=(prec>0)?toFixedFix(n,prec):toFixedFix(Math.round(n),prec);var abs=toFixedFix(Math.abs(n),prec);var _,i;if(abs>=1000){_=abs.split(/D/);i=_[0].length%3||3;_[0]=s.slice(0,i+(n<0))+
_[0].slice(i).replace(/(d{3})/g,sep+'$1');s=_.join(dec);}else{s=s.replace('.',dec);}
var decPos=s.indexOf(dec);if(prec>=1&&decPos!==-1&&(s.length-decPos-1)<prec){s+=new Array(prec-(s.length-decPos-1)).join(0)+'0';}
else if(prec>=1&&decPos===-1){s+=dec+new Array(prec).join(0)+'0';}
return s;}

// Превращает поле пароля в текстовое поле и обратно
// @LinkObject - ссылка по которой кликнули
// @InputObject - объект у которого нужно изменить тип поля
function ChangePasswordFieldType (LinkObject, InputObject) {
  var 
	// Ссылка по которой кликнули
	LObject = $(LinkObject),
	// Объект у которого изменяем тип с password на text
	IObject = $(InputObject),
	// Старый текст ссылки
	txtOld = LObject.text(),
	// Новый текст ссылки
	txtNew = LObject.attr('rel');

  // Если объекты не получены, завершим работу функции
  if( LObject.length==0 || IObject.length==0 ) {
	return false;
  }

  // Изменяем у ссылки текст со старого на новый
  LObject.html(txtNew);
  // Старый текст ссылки сохраняем в атрибуте rel 
  LObject.attr('rel', txtOld);

  // Изменяем тип input поля
  if(IObject[0].type == 'text') {
	IObject[0].type = 'password';
  } else {
	IObject[0].type = 'text';
  }
}

// Крутит изображение при обновлении картинки защиты от роботов
function RefreshImageAction(img,num,cnt) {
  if(cnt>13) {
	return false;
  }

  $(img).attr('src', $(img).attr('rel') + 'icon/refresh/' + num + '.gif');
  num = (num==6)?0:num;
  setTimeout(function(){RefreshImageAction(img, num+1, cnt+1);}, 50);
}

$(document).ready(function(){
 
// Валидация формы на странице оформления заказа, а так же формы на страницы связи с администрацией
  $('.order form, .feedbackForm, .clientForm, .goodsDataOpinionAddForm').submit(function(){
	if($(this).valid()) {
	  SubmitButton = $(this).find('input:submit, button:submit').attr('disabled', true);
	  setTimeout('SubmitButton.attr("disabled", false);', 10000);
	}
  }).validate();

  // В форме оформления заказа при клике на кнопку назад просто переходим на предыдущую страницу
  $('.order form input:submit[name="toprev"]').click(function(){
	var act = this.form.action;
	this.form.action = act + ( act.indexOf( '?' ) > -1 ? '&' : '?' ) + 'toprev=1';
	this.form.submit();
	return false;
  });
  
  // Настройки галереи изображений
  $.nyroModalSettings({
	// из всех элементов с атрибут rel="gallery" будем создавать галерею
	gallery: 'gallery',
	// Включаем прокрутку с последнего изображения на первое
	galleryLoop: true
  });
   
  // Увеличение изображение при клике на него и открытие галереи изображений
  $('.goodsDataMainImage a, .goodsDataMainImageZoom a').click(function(){
		
		// Идентификатор главной картинки
	var goodsImageId = $('.goodsDataMainImage input').attr("rel"),
		
		// Маленькое изображение, по которому на самом деле будем кликать
		goodsImageIconElement = $('.goodsDataMainImagesIcon input[rel="'+goodsImageId+'"]').parent().find('a');

	// Для иконки изображения запустим галерею  
	goodsImageIconElement.nyroModalManual();
	return false;
  });
  
  // Добавление товара в корзину через ajax
  $('.goodsDataForm, .goodsToCartFromCompareForm').submit(function(){
	$(this).nyroModalManual({
	  formIndicator: 'ajax_q',  // Value added when a form is sent
	  minWidth: 450, // Minimum width
	  minHeight: 140, // Minimum height
	  gallery: null // Gallery name if provided
	});
	return false;
  });
  
  // Изменение главного изображения товара при нажатии на миниатюру
  $('.goodsDataMainImagesIcon a').click(function(){
		// Путь к среднему изображению
	var MediumImageUrl = $(this).find('img').attr('rel'),
		
		// Главное изображение, в которое будем вставлять новое изображение
		MainImage = $('.goodsDataMainImage img'),
		
		// В этом объекте хранится идентификатор картинки главного изображения для коректной работы галереи изображений
		MainImageIdObject = $('.goodsDataMainImage input'),
		
		// Получаем идентификатор этого изображения из соседнего input поля
		GoodsImageIconId = $(this).parent().find('input').attr("rel");
	
	// Изменяем главное изображение
	MainImage.attr('src',MediumImageUrl);
	
	// Изменяем идентификатор главного изображения
	MainImageIdObject.attr("rel",GoodsImageIconId);
	
	return false;
  });

  // Функция собирает свойства в строку, для определения модификации товара
  function getSlugFromGoodsDataFormModificationsProperties(obj) {
	var properties = new Array();
	var reset_arr = new Array();
	$(obj).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 = $('.goodsDataForm [name="form[properties][]"]');
  
// Изменение цены товара при изменении у товара свойства для модификации
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		  = 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'),
		goodsAvailableValue		   = $('.goodsDataMainModificationAvailable .available-value'),
		goodsMeasureText			  = $('.goodsDataMainModificationMeasureText'),
		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();
  $('.goodsDataMainModificationPriceNow').css('text-decoration', 'none');
  $('.goodsDataFormSubmitButton .to-cart').text('В корзину');
// Если товара нет в наличии
} else {
  goodsAvailableTrue.hide();
  goodsAvailableFalse.show();
  $('.goodsDataMainModificationPriceNow').css('text-decoration', 'line-through');
  $('.goodsDataFormSubmitButton .to-cart').text('Уведомить меня');
}

// Обновление количества товара в наличии
	   goodsAvailableValue.html(modificationRestValue);
	   
	   // Если товар есть в списке сравнения
	   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('');
	   }

	   // Изменяем единицу измерения модификации
	   goodsMeasureText.html(modificationMeasureName);
	   
	   // Описание модификации товара. Покажем если оно есть, спрячем если его у модификации нет
	   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('Эта позиция относиться к другому цвету или размеру!');
	 }
  });
});  
  // Кнопка добавления товара на сравнение сравнения товаров
  $('.goodsDataCompareButton').click(function(){
	window.location.href = $(this).attr('rel') +
	($(this).attr('rel').indexOf( '?' ) > -1 ? '&' : '?') +
	'id='+
	$('.goodsDataMainModificationId').val()+
	'&from='+
	$('input[name="form[goods_from]"]').val();
	return false;
  });
  
  // Сравнение товаров. Увеличение изображение при клике на ссылку увеличения и открытие галереии с изображениями этого товара
  $('.CompareGoodsImageZoom').click(function(){

	// Галлерея фотографий для данной модификации товаров
	var galleryBlock = $('.galleryBlock' +  $(this).attr('rel')),

	// Главное изображение товара, которое сейчас стоит у товара
	galleryMainImage = $('.CompareGoodsImageMain' +  $(this).attr('rel')),

	// Изображение по которому нужно кликнуть в галлерее изображений
	ImageIngallery = galleryBlock.find('.CompareGoodsImageGallery'+galleryMainImage.attr('rel'));
	
	// Запускаем галлерею изображений от изображения товара, чтобы если например кликнули по гайке, то и открылись гайка, а не еще какой-либо изображение этого товара
	ImageIngallery.nyroModalManual({
	  gallery: 'gallery' +  $(this).attr('rel')
	});

	return false;
  });
  
  // Сравнение товаров. Инвертирование свойств для сравнения товара
  $('.CompareCheckbox.invert').click(function(){
	var checked = true,
		checkboxes = $('.CompareCheckbox:not(.invert)');

	checkboxes.each(function(){
	  if($(this).attr('checked')) {
		checked = false;
		return false;
	  }
	});
	
	checkboxes.each(function(){
	  $(this).attr('checked', checked);
	});
	
	$(this).attr('checked', checked);
  });
  
  // Сравнение товаров. Скрытие характеристик товара, которые выделил пользователь
  $('.CompareGoodsHideSelected').click(function(){

	$('.CompareGoodsTableTbodyComparisonLine').each(function(){
	  var CheckedCheckbox = $(this).find('.CompareCheckbox:checked:not(.invert)');
	  if(CheckedCheckbox.length>0) {
		$(this).hide();
	  }
	});

	// отменяем выделение характеристик товаров
	$('.CompareCheckbox').attr('checked',false);

	return false;
  });
  
  // Сравнение товаров. Отображение скрытых характеристик товара
  $('.CompareGoodsShowAll').click(function(){
	$('.CompareGoodsTableTbodyComparisonLine:hidden').show();
	return false;
  });
  
  // Сравнение товаров. Верхняя навигация изменение фильтра на отображение всех характеристик товаров
  $('.CompareGoodsTableFilterShowAll').click(function(){
	$('.CompareGoodsTableFilterSelected').removeClass('CompareGoodsTableFilterSelected');
	$('.CompareGoodsTableTbodyComparisonLine:hidden').show();
	
	$(this).addClass('CompareGoodsTableFilterSelected');
	return false;
  });

  // Сравнение товаров. Фильтр в верхней навигации. Отображение только различающихся характеристик товара
  $('.CompareGoodsTableFilterShowOnlyDifferent').click(function(){
	$('.CompareGoodsTableFilterSelected').removeClass('CompareGoodsTableFilterSelected');
	$('.CompareGoodsTableTbodyComparisonLine:not(.same)').show();
	$('.CompareGoodsTableTbodyComparisonLine.same').hide();

	$(this).addClass('CompareGoodsTableFilterSelected');
	return false;
  });

  // Сравнение товаров. При наведении на строку сравнения, она выделяется цветом
  $('.CompareGoodsTableTbodyComparisonLine').hover(
	function () { $(this).addClass('hover'); }, 
	function () { $(this).removeClass('hover'); }
  );
  
  // При клике по строке выделяем свойство
  $('.CompareGoodsTableTbodyComparisonLine td:not(.ceil1)').click(function(){
	var CompareCheckbox = $(this).parent().find('.CompareCheckbox');

	if(CompareCheckbox.attr('checked')) {
	  CompareCheckbox.attr('checked', false);
	} else {
	  CompareCheckbox.attr('checked', true);
	}
  });

  // Форма регистрации нового пользователя, действие ссылки "показать пароль"
  $('.clientForm .showPass').click(function(){
	ChangePasswordFieldType(this, $('#sites_client_pass'));
	return false;
  });
  
  // Форма регистрации нового пользователя, при оформлении заказа
  $('.OrderShowPass').click(function(){
	ChangePasswordFieldType(this, $('#contactPassWord'));
	return false;
  });

  // При вводе пароля с caps lockом, покажет блок с сообщением для пользователя
  $('#sites_client_pass, #contactPassWord').capslock({
	caps_lock_on:function(){$("#caps_lock").show();},
	caps_lock_off:function(){$("#caps_lock").hide();}
  });
  
  // При оформлении заказа дадим возможность зарегистрироваться пользователю
  $('#contactWantRegister').click(function(){
	if($(this).attr("checked")) {
	  $('.contactRegisterNeedElement').show();
	  $('#contactEmail, #contactPassWord').addClass('required');
	} else {
	  $('.contactRegisterNeedElement').hide();
	  $('#contactEmail, #contactPassWord').removeClass('required');
	}
  });

  // Добавление отзыва о товаре. Рейтинг
  if(typeof($('.goodsDataOpinionTableRating').stars) == "function" ) {
	$('.goodsDataOpinionTableRating').stars({
	  inputType: "input",
	  split: 2,
	  captionEl: $(".goodsDataOpinionMsg"),
	  cancelShow: false
	});
  }
  
  // Список отзывов о товаре. Ссылка на отображение формы для добавление отзыва о товаре
  $('.goodsDataOpinionShowAddForm').click(function(){
	if(0 == $('#goodsDataOpinionAddBlock:visible').length) {
	  $('#goodsDataOpinionAddBlock').show('blind');
	} else {
	  $('#goodsDataOpinionAddBlock').hide('blind');
	  return false;
	}
  });

  // Добавление отзыва о товаре. кнопка reset скрывающая форму добавления отзыва о товаре
  $('.goodsDataOpinionAddForm input:reset').click(function(){
	$('#goodsDataOpinionAddBlock').hide('blind');
  });

  // Иконка для обновления изображение капчи
  $('.goodsDataOpinionCaptchaRefresh').click(function(){
	RefreshImageAction(this,1,1);
	$('.goodsDataOpinionCaptchaImg').attr('src',$('.goodsDataOpinionCaptchaImg').attr('src')+'&rand'+Math.random(0,10000));
	return false;
  });
  
  // Фильтры по товарам. При нажании на какую либо характеристику или свойство товара происходит фильтрация товаров
  $('.contentTbodySearchFilterBlock input').click(function(){
	$(this)[0].form.submit();
  });
  
  // Действия при выборе варианта доставки на этапе оформления заказа
  $('.deliveryRadio').click(function(){
	
	// Если текущая выделенная зона доставки не относится к выбранному варианту доставки, снимаем выделение с зоны доставки
	if($('.deliveryZoneRadio:checked').attr('deliveryid') != $(this).val()) {
	  $('.deliveryZoneRadio:checked').click().attr('checked', false);
	}
  });
  
  // Действия при выборе зоны внутри варианта доставки на этапе оформления заказа
  $('.deliveryZoneRadio').click(function(){
	
	var 
	  deliveryId = $(this).attr('deliveryid')
	  ,deliveryZonePrice = $(this).parent().find('.deliveryZonePrice')
	  ,deliveryTbody = $('.orderStageDeliveryListTable tbody[rel="' + deliveryId + '"]')
	  ,deliveryBlock = deliveryTbody.find('#deliveryId' + deliveryId)
	  ,deliveryZonePriceBlock = deliveryTbody.find('.orderStageDeliveryZonePrice')
	  ,deliveryDefaultPriceBlock = deliveryTbody.find('.orderStageDeliveryDefaultPrice')
	;

	// Если этот пункт уже выбран, при повторном клике пользователь видимо хочет снять выделение зоны доставки
	if('true' == $(this).attr('rel')) {
	  $(this).attr('checked', false);
	  $(this).attr('rel', 'false');
	  
	  // Показываем цену по умолчанию
	  deliveryDefaultPriceBlock.show();
	  // Скрываем цену образованную от зоны
	  deliveryZonePriceBlock.hide();
	  
	// Отмечаем у всех радио баттонов зон доставки свойство говорящее что они не отмечены
	} else {
	  $('.deliveryZoneRadio').attr('rel', 'false');
	  $(this).attr('rel', 'true');
	  
	  // Показываем цену по умолчанию
	  deliveryDefaultPriceBlock.hide();
	  // Скрываем цену образованную от зоны
	  deliveryZonePriceBlock.show().html(deliveryZonePrice.html());
	  
	  // Выделяем вариант доставки к которому относится зона доставки
	  deliveryBlock.attr('checked', true);
	}
	
  });

   $("#deliveryConvenientDate").datepicker({
	dayNames		: ['Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье'],
	dayNamesMin	  : ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб' ],
	closeText		: 'Готово',
	currentText	  : 'Сегодня' ,
	duration		: '',
	monthNames	  : ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Окрябрь','Ноябрь','Декабрь'],
	monthNamesShort : ['Янв','Фев','Март','Апр','Май','Июнь','Июль','Авг','Сен','Окт','Ноя','Дек'],
	yearRange		: "-6:+6",
	dateFormat	  : 'dd.mm.yy',
	minDate		 : new Date(),
	firstDay		: 1
  });
	
  // Если товара нет в наличии перекидываем покупателя на страницу обратной связи
  $('.goodsDataFormSubmitButton .more-link').click(function(){
	if($(this).text() == 'Уведомить меня') {
	  document.location = "/feedback/?form[feedback_message]=Прошу Вас уведомить меня о наличии товара " + location.href;
//  $('h1:first').text() 
	  return false;
	}
  });  
	
});


#8 velena168

velena168

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

  • Пользователи
  • PipPipPipPip
  • 1 643 сообщений
  • ГородСанкт- Петербург

Отправлено 29 Июль 2012 - 13:55

Обновила шаблон, и ничего не изменилось. Отсутствующие модификации показываются.

Вернула старый шаблон. А очень надо чтобы отсутствующие модификации показывались.

#9 fury21

fury21

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

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

Отправлено 29 Июль 2012 - 16:22

Я тоже попробывал сам, модификации так и не пропали которых нету в наличии...

#10 Vaccina

Vaccina

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

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

Отправлено 30 Июль 2012 - 22:27

Что бы в стандартном шаблоне корректно работала данная функция - необходимо в main.js найти

if(!goodsDataModifications.filter('[rel="'+slug+'"]').length) {
		   $(this).attr('disabled', true);

и заменить на

if(!goodsDataModifications.filter('[rel="'+slug+'"]').length || !parseInt(goodsDataModifications.filter('[rel="'+slug+'"]').find('[name="rest_value"]').val())) {
		   $(this).attr('disabled', true);

Это приведет к тому что модификаций которых нет - станут не доступны для выбора, но они не скроются.
Полный код main.js

// Отправляет ошибку на сервер, для того чтобы служба тех поддержки могла разобраться в проблеме как можно быстрее.
function sendError (desc, page, line) {
  var img=document.createElement('img');
  img.src = 'http://storeland.ru/error/js?desc='+encodeURIComponent(desc)+'&page='+encodeURIComponent(window.location)+'&line=0';
  img.style.position = 'absolute';
  img.style.top = '-9999px';

  try { document.getElementsByTagName('head').appendChild(img) } catch (e){}
  return false;
}

// Форматирует цену
function number_format(number,decimals,dec_point,thousands_sep){var n=number,prec=decimals;var toFixedFix=function(n,prec){var k=Math.pow(10,prec);return(Math.round(n*k)/k).toString();};n=!isFinite(+n)?0:+n;prec=!isFinite(+prec)?0:Math.abs(prec);var sep=(typeof thousands_sep==='undefined')?',':thousands_sep;var dec=(typeof dec_point==='undefined')?'.':dec_point;var s=(prec>0)?toFixedFix(n,prec):toFixedFix(Math.round(n),prec);var abs=toFixedFix(Math.abs(n),prec);var _,i;if(abs>=1000){_=abs.split(/\D/);i=_[0].length%3||3;_[0]=s.slice(0,i+(n<0))+
_[0].slice(i).replace(/(\d{3})/g,sep+'$1');s=_.join(dec);}else{s=s.replace('.',dec);}
var decPos=s.indexOf(dec);if(prec>=1&&decPos!==-1&&(s.length-decPos-1)<prec){s+=new Array(prec-(s.length-decPos-1)).join(0)+'0';}
else if(prec>=1&&decPos===-1){s+=dec+new Array(prec).join(0)+'0';}
return s;}

// Превращает поле пароля в текстовое поле и обратно
// @LinkObject - ссылка по которой кликнули
// @InputObject - объект у которого нужно изменить тип поля
function ChangePasswordFieldType (LinkObject, InputObject) {
  var 
	// Ссылка по которой кликнули
	LObject = $(LinkObject),
	// Объект у которого изменяем тип с password на text
	IObject = $(InputObject),
	// Старый текст ссылки
	txtOld = LObject.text(),
	// Новый текст ссылки
	txtNew = LObject.attr('rel');

  // Если объекты не получены, завершим работу функции
  if( LObject.length==0 || IObject.length==0 ) {
	return false;
  }

  // Изменяем у ссылки текст со старого на новый
  LObject.html(txtNew);
  // Старый текст ссылки сохраняем в атрибуте rel 
  LObject.attr('rel', txtOld);

  // Изменяем тип input поля
  if(IObject[0].type == 'text') {
	IObject[0].type = 'password';
  } else {
	IObject[0].type = 'text';
  }
}

// Крутит изображение при обновлении картинки защиты от роботов
function RefreshImageAction(img,num,cnt) {
  if(cnt>13) {
	return false;
  }

  $(img).attr('src', $(img).attr('rel') + 'icon/refresh/' + num + '.gif');
  num = (num==6)?0:num;
  setTimeout(function(){RefreshImageAction(img, num+1, cnt+1);}, 50);
}

$(document).ready(function(){
 
  // Валидация формы на странице оформления заказа, а так же формы на страницы связи с администрацией
  $('.order form, .feedbackForm, .clientForm, .goodsDataOpinionAddForm').submit(function(){
	if($(this).valid()) {
	  SubmitButton = $(this).find('input:submit, button:submit').attr('disabled', true);
	  setTimeout('SubmitButton.attr("disabled", false);', 10000);
	}
  }).validate();

  // В форме оформления заказа при клике на кнопку назад просто переходим на предыдущую страницу
  $('.order form input:submit[name="toprev"]').click(function(){
	var act = this.form.action;
	this.form.action = act + ( act.indexOf( '\?' ) > -1 ? '&' : '?' ) + 'toprev=1';
	this.form.submit();
	return false;
  });
  
  // Настройки галереи изображений
  $.nyroModalSettings({
	// из всех элементов с атрибут rel="gallery" будем создавать галерею
	gallery: 'gallery',
	// Включаем прокрутку с последнего изображения на первое
	galleryLoop: true
  });
   
  // Увеличение изображение при клике на него и открытие галереи изображений
  $('.goodsDataMainImage a, .goodsDataMainImageZoom a').click(function(){
		
		// Идентификатор главной картинки
	var goodsImageId = $('.goodsDataMainImage input').attr("rel"),
		
		// Маленькое изображение, по которому на самом деле будем кликать
		goodsImageIconElement = $('.goodsDataMainImagesIcon input[rel="'+goodsImageId+'"]').parent().find('a');

	// Для иконки изображения запустим галерею  
	goodsImageIconElement.nyroModalManual();
	return false;
  });
  
  
  // Добавление товара в корзину через ajax
  $('.goodsDataForm, .goodsToCartFromCompareForm, .goodsListForm').submit(function(){
	
	$(this).nyroModalManual({
	  formIndicator: 'ajax_q',  // Value added when a form is sent
	  minWidth: 450, // Minimum width
	  minHeight: 140, // Minimum height
	  gallery: null // Gallery name if provided
	});
	return false;
  });
  
  // Изменение главного изображения товара при нажатии на миниатюру
  $('.goodsDataMainImagesIcon a').click(function(){
		// Путь к среднему изображению
	var MediumImageUrl = $(this).find('img').attr('rel'),
		
		// Главное изображение, в которое будем вставлять новое изображение
		MainImage = $('.goodsDataMainImage img'),
		
		// В этом объекте хранится идентификатор картинки главного изображения для коректной работы галереи изображений
		MainImageIdObject = $('.goodsDataMainImage input'),
		
		// Получаем идентификатор этого изображения из соседнего input поля
		GoodsImageIconId = $(this).parent().find('input').attr("rel");
	
	// Изменяем главное изображение
	MainImage.attr('src',MediumImageUrl);
	
	// Изменяем идентификатор главного изображения
	MainImageIdObject.attr("rel",GoodsImageIconId);
	
	return false;
  });

  // Функция собирает свойства в строку, для определения модификации товара
  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 || !parseInt(goodsDataModifications.filter('[rel="'+slug+'"]').find('[name="rest_value"]').val())) {
		   $(this).attr('disabled', true);
		  // Если выбрав данное значение свойства товара можно подобрать модификацию, то выделяем вариант выбора как доступный.
		  } else {
			$(this).attr('disabled', false);
		  }
		});
	  }
	});
  }
  // Обновляем возможность выбора модификации товара по свойствам. Для тех свойств, выбор по которым не возможен, отключаем такую возможность.
  // Проверяем возможность выбора на всех полях кроме первого, чтобы отключить во всех остальных варианты, которые не возможно выбрать
  updateVisibility (0);
  // Проверяем возможность выбора на всех полях кроме второго, чтобы в первом поле так же отключилась возможность выбора не существующих модификаций
  updateVisibility (1);
  
  // Изменение цены товара при изменении у товара свойства для модификации
  goodsDataProperties.each(function(y){
	$(this).change(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);
	});
  });
  
  // Кнопка добавления товара на сравнение сравнения товаров
  $('.goodsDataCompareButton').click(function(){
	window.location.href = $(this).attr('rel') +
	($(this).attr('rel').indexOf( '\?' ) > -1 ? '&' : '?') +
	'id='+
	$('.goodsDataMainModificationId').val()+
	'&from='+
	$('input[name="form[goods_from]"]').val();
	return false;
  });
  
  // Сравнение товаров. Увеличение изображение при клике на ссылку увеличения и открытие галереии с изображениями этого товара
  $('.CompareGoodsImageZoom').click(function(){

	// Галлерея фотографий для данной модификации товаров
	var galleryBlock = $('.galleryBlock' +  $(this).attr('rel')),

	// Главное изображение товара, которое сейчас стоит у товара
	galleryMainImage = $('.CompareGoodsImageMain' +  $(this).attr('rel')),

	// Изображение по которому нужно кликнуть в галлерее изображений
	ImageIngallery = galleryBlock.find('.CompareGoodsImageGallery'+galleryMainImage.attr('rel'));
	
	// Запускаем галлерею изображений от изображения товара, чтобы если например кликнули по гайке, то и открылись гайка, а не еще какой-либо изображение этого товара
	ImageIngallery.nyroModalManual({
	  gallery: 'gallery' +  $(this).attr('rel')
	});

	return false;
  });
  
  // Сравнение товаров. Инвертирование свойств для сравнения товара
  $('.CompareCheckbox.invert').click(function(){
	var checked = true,
		checkboxes = $('.CompareCheckbox:not(.invert)');

	checkboxes.each(function(){
	  if($(this).attr('checked')) {
		checked = false;
		return false;
	  }
	});
	
	checkboxes.each(function(){
	  $(this).attr('checked', checked);
	});
	
	$(this).attr('checked', checked);
  });
  
  // Сравнение товаров. Скрытие характеристик товара, которые выделил пользователь
  $('.CompareGoodsHideSelected').click(function(){

	$('.CompareGoodsTableTbodyComparisonLine').each(function(){
	  var CheckedCheckbox = $(this).find('.CompareCheckbox:checked:not(.invert)');
	  if(CheckedCheckbox.length>0) {
		$(this).hide();
	  }
	});

	// отменяем выделение характеристик товаров
	$('.CompareCheckbox').attr('checked',false);

	return false;
  });
  
  // Сравнение товаров. Отображение скрытых характеристик товара
  $('.CompareGoodsShowAll').click(function(){
	$('.CompareGoodsTableTbodyComparisonLine:hidden').show();
	return false;
  });
  
  // Сравнение товаров. Верхняя навигация изменение фильтра на отображение всех характеристик товаров
  $('.CompareGoodsTableFilterShowAll').click(function(){
	$('.CompareGoodsTableFilterSelected').removeClass('CompareGoodsTableFilterSelected');
	$('.CompareGoodsTableTbodyComparisonLine:hidden').show();
	
	$(this).addClass('CompareGoodsTableFilterSelected');
	return false;
  });

  // Сравнение товаров. Фильтр в верхней навигации. Отображение только различающихся характеристик товара
  $('.CompareGoodsTableFilterShowOnlyDifferent').click(function(){
	$('.CompareGoodsTableFilterSelected').removeClass('CompareGoodsTableFilterSelected');
	$('.CompareGoodsTableTbodyComparisonLine:not(.same)').show();
	$('.CompareGoodsTableTbodyComparisonLine.same').hide();

	$(this).addClass('CompareGoodsTableFilterSelected');
	return false;
  });

  // Сравнение товаров. При наведении на строку сравнения, она выделяется цветом
  $('.CompareGoodsTableTbodyComparisonLine').hover(
	function () { $(this).addClass('hover'); }, 
	function () { $(this).removeClass('hover'); }
  );
  
  // При клике по строке выделяем свойство
  $('.CompareGoodsTableTbodyComparisonLine td:not(.ceil1)').click(function(){
	var CompareCheckbox = $(this).parent().find('.CompareCheckbox');

	if(CompareCheckbox.attr('checked')) {
	  CompareCheckbox.attr('checked', false);
	} else {
	  CompareCheckbox.attr('checked', true);
	}
  });

  // Форма регистрации нового пользователя, действие ссылки "показать пароль"
  $('.clientForm .showPass').click(function(){
	ChangePasswordFieldType(this, $('#sites_client_pass'));
	return false;
  });
  
  // Форма регистрации нового пользователя, при оформлении заказа
  $('.OrderShowPass').click(function(){
	ChangePasswordFieldType(this, $('#contactPassWord'));
	return false;
  });

  // При вводе пароля с caps lockом, покажет блок с сообщением для пользователя
  $('#sites_client_pass, #contactPassWord').capslock({
	caps_lock_on:function(){$("#caps_lock").show();},
	caps_lock_off:function(){$("#caps_lock").hide();}
  });
  
  // При оформлении заказа дадим возможность зарегистрироваться пользователю
  $('#contactWantRegister').click(function(){
	if($(this).attr("checked")) {
	  $('.contactRegisterNeedElement').show();
	  $('#contactEmail, #contactPassWord').addClass('required');
	} else {
	  $('.contactRegisterNeedElement').hide();
	  $('#contactEmail, #contactPassWord').removeClass('required');
	}
  });

  // Добавление отзыва о товаре. Рейтинг
  if(typeof($('.goodsDataOpinionTableRating').stars) == "function" ) {
	$('.goodsDataOpinionTableRating').stars({
	  inputType: "input",
	  split: 2,
	  captionEl: $(".goodsDataOpinionMsg"),
	  cancelShow: false
	});
  }
  
  // Список отзывов о товаре. Ссылка на отображение формы для добавление отзыва о товаре
  $('.goodsDataOpinionShowAddForm').click(function(){
	if(0 == $('#goodsDataOpinionAddBlock:visible').length) {
	  $('#goodsDataOpinionAddBlock').show('blind');
	} else {
	  $('#goodsDataOpinionAddBlock').hide('blind');
	  return false;
	}
  });

  // Добавление отзыва о товаре. кнопка reset скрывающая форму добавления отзыва о товаре
  $('.goodsDataOpinionAddForm input:reset').click(function(){
	$('#goodsDataOpinionAddBlock').hide('blind');
  });

  // Иконка для обновления изображение капчи
  $('.goodsDataOpinionCaptchaRefresh').click(function(){
	RefreshImageAction(this,1,1);
	$('.goodsDataOpinionCaptchaImg').attr('src',$('.goodsDataOpinionCaptchaImg').attr('src')+'&rand'+Math.random(0,10000));
	return false;
  });
  
  // Фильтры по товарам. При нажании на какую либо характеристику или свойство товара происходит фильтрация товаров
  $('.contentTbodySearchFilterBlock input').click(function(){
	$(this)[0].form.submit();
  });
  
  // Действия при выборе варианта доставки на этапе оформления заказа
  $('.deliveryRadio').click(function(){
	
	// Если текущая выделенная зона доставки не относится к выбранному варианту доставки, снимаем выделение с зоны доставки
	if($('.deliveryZoneRadio:checked').attr('deliveryid') != $(this).val()) {
	  $('.deliveryZoneRadio:checked').click().attr('checked', false);
	}
  });
  
  // Действия при выборе зоны внутри варианта доставки на этапе оформления заказа
  $('.deliveryZoneRadio').click(function(){
	
	var 
	  deliveryId = $(this).attr('deliveryid')
	  ,deliveryZonePrice = $(this).parent().find('.deliveryZonePrice')
	  ,deliveryTbody = $('.orderStageDeliveryListTable tbody[rel="' + deliveryId + '"]')
	  ,deliveryBlock = deliveryTbody.find('#deliveryId' + deliveryId)
	  ,deliveryZonePriceBlock = deliveryTbody.find('.orderStageDeliveryZonePrice')
	  ,deliveryDefaultPriceBlock = deliveryTbody.find('.orderStageDeliveryDefaultPrice')
	;

	// Если этот пункт уже выбран, при повторном клике пользователь видимо хочет снять выделение зоны доставки
	if('true' == $(this).attr('rel')) {
	  $(this).attr('checked', false);
	  $(this).attr('rel', 'false');
	  
	  // Показываем цену по умолчанию
	  deliveryDefaultPriceBlock.show();
	  // Скрываем цену образованную от зоны
	  deliveryZonePriceBlock.hide();
	  
	// Отмечаем у всех радио баттонов зон доставки свойство говорящее что они не отмечены
	} else {
	  $('.deliveryZoneRadio').attr('rel', 'false');
	  $(this).attr('rel', 'true');
	  
	  // Показываем цену по умолчанию
	  deliveryDefaultPriceBlock.hide();
	  // Скрываем цену образованную от зоны
	  deliveryZonePriceBlock.show().html(deliveryZonePrice.html());
	  
	  // Выделяем вариант доставки к которому относится зона доставки
	  deliveryBlock.attr('checked', true);
	}
	
  });

   $("#deliveryConvenientDate").datepicker({
		dayNames			: ['Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье'],
		dayNamesMin		  : ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб' ],
		closeText			: 'Готово',
		currentText		  : 'Сегодня' ,
		duration			: '',
		monthNames		  : ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Окрябрь','Ноябрь','Декабрь'],
		monthNamesShort : ['Янв','Фев','Март','Апр','Май','Июнь','Июль','Авг','Сен','Окт','Ноя','Дек'],
		yearRange			: "-6:+6",
		dateFormat		  : 'dd.mm.yy',
		minDate		 : new Date(),
		firstDay			: 1
	});
});

Цитата

Я тоже попробывал сам, модификации так и не пропали которых нету в наличии...

Попробуйте использовать

// Отправляет ошибку на сервер, для того чтобы служба тех поддержки могла разобраться в проблеме как можно быстрее.
function sendError (desc, page, line) {
  var img=document.createElement('img');
  img.src = 'http://storeland.ru/error/js?desc='+encodeURIComponent(desc)+'&page='+encodeURIComponent(window.location)+'&line=0';
  img.style.position = 'absolute';
  img.style.top = '-9999px';

  try { document.getElementsByTagName('head').appendChild(img) } catch (e){}
  return false;
}

// Форматирует цену
function number_format(number,decimals,dec_point,thousands_sep){var n=number,prec=decimals;var toFixedFix=function(n,prec){var k=Math.pow(10,prec);return(Math.round(n*k)/k).toString();};n=!isFinite(+n)?0:+n;prec=!isFinite(+prec)?0:Math.abs(prec);var sep=(typeof thousands_sep==='undefined')?',':thousands_sep;var dec=(typeof dec_point==='undefined')?'.':dec_point;var s=(prec>0)?toFixedFix(n,prec):toFixedFix(Math.round(n),prec);var abs=toFixedFix(Math.abs(n),prec);var _,i;if(abs>=1000){_=abs.split(/D/);i=_[0].length%3||3;_[0]=s.slice(0,i+(n<0))+
_[0].slice(i).replace(/(d{3})/g,sep+'$1');s=_.join(dec);}else{s=s.replace('.',dec);}
var decPos=s.indexOf(dec);if(prec>=1&&decPos!==-1&&(s.length-decPos-1)<prec){s+=new Array(prec-(s.length-decPos-1)).join(0)+'0';}
else if(prec>=1&&decPos===-1){s+=dec+new Array(prec).join(0)+'0';}
return s;}

// Превращает поле пароля в текстовое поле и обратно
// @LinkObject - ссылка по которой кликнули
// @InputObject - объект у которого нужно изменить тип поля
function ChangePasswordFieldType (LinkObject, InputObject) {
  var 
	// Ссылка по которой кликнули
	LObject = $(LinkObject),
	// Объект у которого изменяем тип с password на text
	IObject = $(InputObject),
	// Старый текст ссылки
	txtOld = LObject.text(),
	// Новый текст ссылки
	txtNew = LObject.attr('rel');

  // Если объекты не получены, завершим работу функции
  if( LObject.length==0 || IObject.length==0 ) {
	return false;
  }

  // Изменяем у ссылки текст со старого на новый
  LObject.html(txtNew);
  // Старый текст ссылки сохраняем в атрибуте rel 
  LObject.attr('rel', txtOld);

  // Изменяем тип input поля
  if(IObject[0].type == 'text') {
	IObject[0].type = 'password';
  } else {
	IObject[0].type = 'text';
  }
}

// Крутит изображение при обновлении картинки защиты от роботов
function RefreshImageAction(img,num,cnt) {
  if(cnt>13) {
	return false;
  }

  $(img).attr('src', $(img).attr('rel') + 'icon/refresh/' + num + '.gif');
  num = (num==6)?0:num;
  setTimeout(function(){RefreshImageAction(img, num+1, cnt+1);}, 50);
}

$(document).ready(function(){
 
// Валидация формы на странице оформления заказа, а так же формы на страницы связи с администрацией
  $('.order form, .feedbackForm, .clientForm, .goodsDataOpinionAddForm').submit(function(){
	if($(this).valid()) {
	  SubmitButton = $(this).find('input:submit, button:submit').attr('disabled', true);
	  setTimeout('SubmitButton.attr("disabled", false);', 10000);
	}
  }).validate();

  // В форме оформления заказа при клике на кнопку назад просто переходим на предыдущую страницу
  $('.order form input:submit[name="toprev"]').click(function(){
	var act = this.form.action;
	this.form.action = act + ( act.indexOf( '?' ) > -1 ? '&' : '?' ) + 'toprev=1';
	this.form.submit();
	return false;
  });
  
  // Настройки галереи изображений
  $.nyroModalSettings({
	// из всех элементов с атрибут rel="gallery" будем создавать галерею
	gallery: 'gallery',
	// Включаем прокрутку с последнего изображения на первое
	galleryLoop: true
  });
   
  // Увеличение изображение при клике на него и открытие галереи изображений
  $('.goodsDataMainImage a, .goodsDataMainImageZoom a').click(function(){
		
		// Идентификатор главной картинки
	var goodsImageId = $('.goodsDataMainImage input').attr("rel"),
		
		// Маленькое изображение, по которому на самом деле будем кликать
		goodsImageIconElement = $('.goodsDataMainImagesIcon input[rel="'+goodsImageId+'"]').parent().find('a');

	// Для иконки изображения запустим галерею  
	goodsImageIconElement.nyroModalManual();
	return false;
  });
  
  // Добавление товара в корзину через ajax
  $('.goodsDataForm, .goodsToCartFromCompareForm').submit(function(){
	$(this).nyroModalManual({
	  formIndicator: 'ajax_q',  // Value added when a form is sent
	  minWidth: 450, // Minimum width
	  minHeight: 140, // Minimum height
	  gallery: null // Gallery name if provided
	});
	return false;
  });
  
  // Изменение главного изображения товара при нажатии на миниатюру
  $('.goodsDataMainImagesIcon a').click(function(){
		// Путь к среднему изображению
	var MediumImageUrl = $(this).find('img').attr('rel'),
		
		// Главное изображение, в которое будем вставлять новое изображение
		MainImage = $('.goodsDataMainImage img'),
		
		// В этом объекте хранится идентификатор картинки главного изображения для коректной работы галереи изображений
		MainImageIdObject = $('.goodsDataMainImage input'),
		
		// Получаем идентификатор этого изображения из соседнего input поля
		GoodsImageIconId = $(this).parent().find('input').attr("rel");
	
	// Изменяем главное изображение
	MainImage.attr('src',MediumImageUrl);
	
	// Изменяем идентификатор главного изображения
	MainImageIdObject.attr("rel",GoodsImageIconId);
	
	return false;
  });

  // Функция собирает свойства в строку, для определения модификации товара
  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 || !parseInt(goodsDataModifications.filter('[rel="'+slug+'"]').find('[name="rest_value"]').val())) {
		   $(this).attr('disabled', true);
		  // Если выбрав данное значение свойства товара можно подобрать модификацию, то выделяем вариант выбора как доступный.
		  } else {
			$(this).attr('disabled', false);
		  }
		});
	  }
	});
  }
  // Обновляем возможность выбора модификации товара по свойствам. Для тех свойств, выбор по которым не возможен, отключаем такую возможность.
  // Проверяем возможность выбора на всех полях кроме первого, чтобы отключить во всех остальных варианты, которые не возможно выбрать
  updateVisibility (0);
  // Проверяем возможность выбора на всех полях кроме второго, чтобы в первом поле так же отключилась возможность выбора не существующих модификаций
  updateVisibility (1);
  
  // Изменение цены товара при изменении у товара свойства для модификации
  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'),
		goodsAvailableValue		   = $('.goodsDataMainModificationAvailable .available-value'),
		goodsMeasureText			  = $('.goodsDataMainModificationMeasureText'),
		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();
  $('.goodsDataMainModificationPriceNow').css('text-decoration', 'none');
  $('.goodsDataFormSubmitButton .to-cart').text('В корзину');
// Если товара нет в наличии
} else {
  goodsAvailableTrue.hide();
  goodsAvailableFalse.show();
  $('.goodsDataMainModificationPriceNow').css('text-decoration', 'line-through');
  $('.goodsDataFormSubmitButton .to-cart').text('Уведомить меня');
}

// Обновление количества товара в наличии
	   goodsAvailableValue.html(modificationRestValue);
	   
	   // Если товар есть в списке сравнения
	   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('');
	   }

	   // Изменяем единицу измерения модификации
	   goodsMeasureText.html(modificationMeasureName);
	   
	   // Описание модификации товара. Покажем если оно есть, спрячем если его у модификации нет
	   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);
  });
});  
  // Кнопка добавления товара на сравнение сравнения товаров
  $('.goodsDataCompareButton').click(function(){
	window.location.href = $(this).attr('rel') +
	($(this).attr('rel').indexOf( '?' ) > -1 ? '&' : '?') +
	'id='+
	$('.goodsDataMainModificationId').val()+
	'&from='+
	$('input[name="form[goods_from]"]').val();
	return false;
  });
  
  // Сравнение товаров. Увеличение изображение при клике на ссылку увеличения и открытие галереии с изображениями этого товара
  $('.CompareGoodsImageZoom').click(function(){

	// Галлерея фотографий для данной модификации товаров
	var galleryBlock = $('.galleryBlock' +  $(this).attr('rel')),

	// Главное изображение товара, которое сейчас стоит у товара
	galleryMainImage = $('.CompareGoodsImageMain' +  $(this).attr('rel')),

	// Изображение по которому нужно кликнуть в галлерее изображений
	ImageIngallery = galleryBlock.find('.CompareGoodsImageGallery'+galleryMainImage.attr('rel'));
	
	// Запускаем галлерею изображений от изображения товара, чтобы если например кликнули по гайке, то и открылись гайка, а не еще какой-либо изображение этого товара
	ImageIngallery.nyroModalManual({
	  gallery: 'gallery' +  $(this).attr('rel')
	});

	return false;
  });
  
  // Сравнение товаров. Инвертирование свойств для сравнения товара
  $('.CompareCheckbox.invert').click(function(){
	var checked = true,
		checkboxes = $('.CompareCheckbox:not(.invert)');

	checkboxes.each(function(){
	  if($(this).attr('checked')) {
		checked = false;
		return false;
	  }
	});
	
	checkboxes.each(function(){
	  $(this).attr('checked', checked);
	});
	
	$(this).attr('checked', checked);
  });
  
  // Сравнение товаров. Скрытие характеристик товара, которые выделил пользователь
  $('.CompareGoodsHideSelected').click(function(){

	$('.CompareGoodsTableTbodyComparisonLine').each(function(){
	  var CheckedCheckbox = $(this).find('.CompareCheckbox:checked:not(.invert)');
	  if(CheckedCheckbox.length>0) {
		$(this).hide();
	  }
	});

	// отменяем выделение характеристик товаров
	$('.CompareCheckbox').attr('checked',false);

	return false;
  });
  
  // Сравнение товаров. Отображение скрытых характеристик товара
  $('.CompareGoodsShowAll').click(function(){
	$('.CompareGoodsTableTbodyComparisonLine:hidden').show();
	return false;
  });
  
  // Сравнение товаров. Верхняя навигация изменение фильтра на отображение всех характеристик товаров
  $('.CompareGoodsTableFilterShowAll').click(function(){
	$('.CompareGoodsTableFilterSelected').removeClass('CompareGoodsTableFilterSelected');
	$('.CompareGoodsTableTbodyComparisonLine:hidden').show();
	
	$(this).addClass('CompareGoodsTableFilterSelected');
	return false;
  });

  // Сравнение товаров. Фильтр в верхней навигации. Отображение только различающихся характеристик товара
  $('.CompareGoodsTableFilterShowOnlyDifferent').click(function(){
	$('.CompareGoodsTableFilterSelected').removeClass('CompareGoodsTableFilterSelected');
	$('.CompareGoodsTableTbodyComparisonLine:not(.same)').show();
	$('.CompareGoodsTableTbodyComparisonLine.same').hide();

	$(this).addClass('CompareGoodsTableFilterSelected');
	return false;
  });

  // Сравнение товаров. При наведении на строку сравнения, она выделяется цветом
  $('.CompareGoodsTableTbodyComparisonLine').hover(
	function () { $(this).addClass('hover'); }, 
	function () { $(this).removeClass('hover'); }
  );
  
  // При клике по строке выделяем свойство
  $('.CompareGoodsTableTbodyComparisonLine td:not(.ceil1)').click(function(){
	var CompareCheckbox = $(this).parent().find('.CompareCheckbox');

	if(CompareCheckbox.attr('checked')) {
	  CompareCheckbox.attr('checked', false);
	} else {
	  CompareCheckbox.attr('checked', true);
	}
  });

  // Форма регистрации нового пользователя, действие ссылки "показать пароль"
  $('.clientForm .showPass').click(function(){
	ChangePasswordFieldType(this, $('#sites_client_pass'));
	return false;
  });
  
  // Форма регистрации нового пользователя, при оформлении заказа
  $('.OrderShowPass').click(function(){
	ChangePasswordFieldType(this, $('#contactPassWord'));
	return false;
  });

  // При вводе пароля с caps lockом, покажет блок с сообщением для пользователя
  $('#sites_client_pass, #contactPassWord').capslock({
	caps_lock_on:function(){$("#caps_lock").show();},
	caps_lock_off:function(){$("#caps_lock").hide();}
  });
  
  // При оформлении заказа дадим возможность зарегистрироваться пользователю
  $('#contactWantRegister').click(function(){
	if($(this).attr("checked")) {
	  $('.contactRegisterNeedElement').show();
	  $('#contactEmail, #contactPassWord').addClass('required');
	} else {
	  $('.contactRegisterNeedElement').hide();
	  $('#contactEmail, #contactPassWord').removeClass('required');
	}
  });

  // Добавление отзыва о товаре. Рейтинг
  if(typeof($('.goodsDataOpinionTableRating').stars) == "function" ) {
	$('.goodsDataOpinionTableRating').stars({
	  inputType: "input",
	  split: 2,
	  captionEl: $(".goodsDataOpinionMsg"),
	  cancelShow: false
	});
  }
  
  // Список отзывов о товаре. Ссылка на отображение формы для добавление отзыва о товаре
  $('.goodsDataOpinionShowAddForm').click(function(){
	if(0 == $('#goodsDataOpinionAddBlock:visible').length) {
	  $('#goodsDataOpinionAddBlock').show('blind');
	} else {
	  $('#goodsDataOpinionAddBlock').hide('blind');
	  return false;
	}
  });

  // Добавление отзыва о товаре. кнопка reset скрывающая форму добавления отзыва о товаре
  $('.goodsDataOpinionAddForm input:reset').click(function(){
	$('#goodsDataOpinionAddBlock').hide('blind');
  });

  // Иконка для обновления изображение капчи
  $('.goodsDataOpinionCaptchaRefresh').click(function(){
	RefreshImageAction(this,1,1);
	$('.goodsDataOpinionCaptchaImg').attr('src',$('.goodsDataOpinionCaptchaImg').attr('src')+'&rand'+Math.random(0,10000));
	return false;
  });
  
  // Фильтры по товарам. При нажании на какую либо характеристику или свойство товара происходит фильтрация товаров
  $('.contentTbodySearchFilterBlock input').click(function(){
	$(this)[0].form.submit();
  });
  
  // Действия при выборе варианта доставки на этапе оформления заказа
  $('.deliveryRadio').click(function(){
	
	// Если текущая выделенная зона доставки не относится к выбранному варианту доставки, снимаем выделение с зоны доставки
	if($('.deliveryZoneRadio:checked').attr('deliveryid') != $(this).val()) {
	  $('.deliveryZoneRadio:checked').click().attr('checked', false);
	}
  });
  
  // Действия при выборе зоны внутри варианта доставки на этапе оформления заказа
  $('.deliveryZoneRadio').click(function(){
	
	var 
	  deliveryId = $(this).attr('deliveryid')
	  ,deliveryZonePrice = $(this).parent().find('.deliveryZonePrice')
	  ,deliveryTbody = $('.orderStageDeliveryListTable tbody[rel="' + deliveryId + '"]')
	  ,deliveryBlock = deliveryTbody.find('#deliveryId' + deliveryId)
	  ,deliveryZonePriceBlock = deliveryTbody.find('.orderStageDeliveryZonePrice')
	  ,deliveryDefaultPriceBlock = deliveryTbody.find('.orderStageDeliveryDefaultPrice')
	;

	// Если этот пункт уже выбран, при повторном клике пользователь видимо хочет снять выделение зоны доставки
	if('true' == $(this).attr('rel')) {
	  $(this).attr('checked', false);
	  $(this).attr('rel', 'false');
	  
	  // Показываем цену по умолчанию
	  deliveryDefaultPriceBlock.show();
	  // Скрываем цену образованную от зоны
	  deliveryZonePriceBlock.hide();
	  
	// Отмечаем у всех радио баттонов зон доставки свойство говорящее что они не отмечены
	} else {
	  $('.deliveryZoneRadio').attr('rel', 'false');
	  $(this).attr('rel', 'true');
	  
	  // Показываем цену по умолчанию
	  deliveryDefaultPriceBlock.hide();
	  // Скрываем цену образованную от зоны
	  deliveryZonePriceBlock.show().html(deliveryZonePrice.html());
	  
	  // Выделяем вариант доставки к которому относится зона доставки
	  deliveryBlock.attr('checked', true);
	}
	
  });

   $("#deliveryConvenientDate").datepicker({
	dayNames		: ['Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье'],
	dayNamesMin	  : ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб' ],
	closeText		: 'Готово',
	currentText	  : 'Сегодня' ,
	duration		: '',
	monthNames	  : ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Окрябрь','Ноябрь','Декабрь'],
	monthNamesShort : ['Янв','Фев','Март','Апр','Май','Июнь','Июль','Авг','Сен','Окт','Ноя','Дек'],
	yearRange		: "-6:+6",
	dateFormat	  : 'dd.mm.yy',
	minDate		 : new Date(),
	firstDay		: 1
  });
	
  // Если товара нет в наличии перекидываем покупателя на страницу обратной связи
  $('.goodsDataFormSubmitButton .more-link').click(function(){
	if($(this).text() == 'Уведомить меня') {
	  document.location = "/feedback/?form[feedback_message]=Прошу Вас уведомить меня о наличии товара " + location.href;
//  $('h1:first').text() 
	  return false;
	}
  });  
	
});


#11 velena168

velena168

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

  • Пользователи
  • PipPipPipPip
  • 1 643 сообщений
  • ГородСанкт- Петербург

Отправлено 31 Июль 2012 - 09:29

Все предложенное перепробовала. Не помогает, ПОКАЗЫВАЮТСЯ, пришлось возвращать старый шаблон, т. к. теперь товары, к-рых нет в наличии, отображаются В НАЛИЧИИ, что еще хуже.

#12 fury21

fury21

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

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

Отправлено 31 Июль 2012 - 20:48

У меня опять не получилось!!! Очень прошу помочь поменять мне !!!

#13 support

support

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

  • Модераторы
  • 3 686 сообщений
  • ГородМосква

Отправлено 08 Август 2012 - 02:03

Просмотр сообщенияvelena168 (31 Июль 2012 - 09:29) писал:

Все предложенное перепробовала. Не помогает, ПОКАЗЫВАЮТСЯ, пришлось возвращать старый шаблон, т. к. теперь товары, к-рых нет в наличии, отображаются В НАЛИЧИИ, что еще хуже.
Данные свойства в любом случае будут показываться, т.к. может возникнуть ситуация когда один товар с этим свойством в наличии есть, а второго нет. Определения этого на этапе формирования списка свойств товаров к сожалению нет, а делать фильтрацию не javascript-е возможно лишь указанным выше способом - не давать делать выбор той модификации товара, которой нет в наличии. Другого варианта на данный момент к сожалению нет.

#14 bugaga1974

bugaga1974

    Пользователь

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

Отправлено 17 Август 2012 - 10:28

Просмотр сообщенияsupport (08 Август 2012 - 02:03) писал:

Данные свойства в любом случае будут показываться, т.к. может возникнуть ситуация когда один товар с этим свойством в наличии есть, а второго нет. Определения этого на этапе формирования списка свойств товаров к сожалению нет, а делать фильтрацию не javascript-е возможно лишь указанным выше способом - не давать делать выбор той модификации товара, которой нет в наличии. Другого варианта на данный момент к сожалению нет.

Уважаемые владельцы сторлэнда! Отписки, отговорки, вежливые отказы и пр. уже давным давно надоели! Бляха муха,когда уже разработчики сделают функцию отсутствия товара в наличии (возможность нулевой цены)??????!!!!!!!! Ужас,вообще ничего не делаете.Какие-то ненужные ф-ции добавляете,а самое необходимое висит годами!!!Вынуждаете отказаться от использования вашего неполноценного "движка". В данном случае стоимость услуг не соответствует качеству оказания услуг!
0

#15 support

support

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

  • Модераторы
  • 3 686 сообщений
  • ГородМосква

Отправлено 31 Август 2012 - 13:45

Просмотр сообщенияbugaga1974 (17 Август 2012 - 10:28) писал:

Уважаемые владельцы сторлэнда! Отписки, отговорки, вежливые отказы и пр. уже давным давно надоели! Бляха муха,когда уже разработчики сделают функцию отсутствия товара в наличии (возможность нулевой цены)??????!!!!!!!!
Данная задача не столь популярна. В действительности о ней спрашивают довольно редко, 1-2 запроса в месяц. В любом случае её в функционал платформы добавили, теперь Вы можете указывать цену за товар 0 рублей.

Просмотр сообщенияbugaga1974 (17 Август 2012 - 10:28) писал:

Уважаемые владельцы сторлэнда! Отписки, отговорки, вежливые отказы и пр. уже давным давно надоели! Бляха муха,когда уже разработчики сделают функцию отсутствия товара в наличии (возможность нулевой цены)??????!!!!!!!! Ужас,вообще ничего не делаете.
Разработка ведётся ежедневно. Другой вопрос что она по большей части не видна с первого взгляда. Исправление ошибок, оптимизация кода, ввод в работу нового оборудования, повышение юзабилити, ввод не основного, но нужного для всех функционала... Говорить о том что ничего не происходит будет не совсем корректно.

Просмотр сообщенияbugaga1974 (17 Август 2012 - 10:28) писал:

Вынуждаете отказаться от использования вашего неполноценного "движка". В данном случае стоимость услуг не соответствует качеству оказания услуг!
Неполноценность движка в данном случае определяется весьма субъективно. 95% задач большинства интернет магазинов наша платформа позволяет решить. Тот функционал который используется менее чем 1% пользователей мы удаляем из системы, например так было с автосинхронизацией товаров или adwords купонами на рекламу. Стоимость услуг на наш взгляд сильно занижена, но мы её не планируем подымать. Проверьте предложения конкурентов, подобного соотношения цена-качества Вы не найдёте.

В любом случае все пожелания о новом функционале мы учитываем в планах нашей разработки. В ближайшее время готовится крупный релиз различных новшеств, надеюсь они Вам понравятся. Если есть интересные идеи и предложения, пишите нам о них. На реформале производится голосование за наиболее важные функции, так же мы прислушиваемся к предложениям поступающим из других источников (форум, телефон, почта), если идея нужна - мы обязательно её реализуем. Вопрос лишь времени.

#16 seregan

seregan

    Пользователь

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

Отправлено 19 Февраль 2013 - 05:40

Горячая тема, как я посмотрю ))
Мне теперь тоже понадобилось, чтобы закончившийся размер исчезал из списка выбора. Сейчас 110 размер виден в списке, но при его выборе появляется надпись "Товара нет в наличии" - кое-что конечно, но хотелось, чтобы 110 даже в списке не было. Можно что-то быстро сделать? Тема с 2012 года, может что-то прикрутили?
Прикрепленный файл  Размер110.doc   219,5К   170 Количество загрузок:

#17 Vaccina

Vaccina

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

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

Отправлено 20 Февраль 2013 - 00:15

К сожалению, сделать что-то по данному поводу нельзя кроме тех изменений что описаны в данной теме и подобных темах на данном форуме.

#18 zabota-mama

zabota-mama

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

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

Отправлено 03 Март 2013 - 21:20

Просмотр сообщенияsupport (08 Август 2012 - 02:03) писал:

Данные свойства в любом случае будут показываться, т.к. может возникнуть ситуация когда один товар с этим свойством в наличии есть, а второго нет. Определения этого на этапе формирования списка свойств товаров к сожалению нет, а делать фильтрацию не javascript-е возможно лишь указанным выше способом - не давать делать выбор той модификации товара, которой нет в наличии. Другого варианта на данный момент к сожалению нет.

Подскажите, "не давать делать выбор той модификации товара, которой нет в наличии." - здесь имеется ввиду выбрать нельзя или нельзя положить в корзину?

Я прочитал эту ветку, но так и не понял, можно ли скрывать или не давать выбрать тот размер одежды которого нет в наличии? То есть чтобы в выпадающем списке размеров этого размера либо вообще бы не было, либо его нельзя было бы выбрать.

Изменения в main.js я сделал, но ничего не изменилось.
Я туда вставил кусок, который у меня отсутствовал:
// кусок для не выбора отсутствующего размера
 
   // Запоминаем блоки с информацией по модификациям, для ускорения работы
		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 || !parseInt(goodsDataModifications.filter('[rel="'+slug+'"]').find('[name="rest_value"]').val())) {
				   $(this).attr('disabled', true);
				  // Если выбрав данное значение свойства товара можно подобрать модификацию, то выделяем вариант выбора как доступный.
				  } else {
						$(this).attr('disabled', false);
				  }
				});
		  }
		});
  }
  // Обновляем возможность выбора модификации товара по свойствам. Для тех свойств, выбор по которым не возможен, отключаем такую возможность.
  // Проверяем возможность выбора на всех полях кроме первого, чтобы отключить во всех остальных варианты, которые не возможно выбрать
  updateVisibility (0);
  // Проверяем возможность выбора на всех полях кроме второго, чтобы в первом поле так же отключилась возможность выбора не существующих модификаций
  updateVisibility (1);
 
 
 
  //здесь он заканчивается
 


Может я что-то неправильно сделал?

Вот пример товара http://zabota-mama.r...ication=3673767 Здесь 104 и 110 размеры закончились, но они все равно отображаются и их можно выбрать.


Весь мой main.js теперь выглядит так:

// Отправляет ошибку на сервер, для того чтобы служба тех поддержки могла разобраться в проблеме как можно быстрее.
function sendError (desc, page, line) {
  var img=document.createElement('img');
  img.src = 'http://storeland.ru/error/js?desc='+encodeURIComponent(desc)+'&page='+encodeURIComponent(window.location)+'&line=0';
  img.style.position = 'absolute';
  img.style.top = '-9999px';
  try { document.getElementsByTagName('head').appendChild(img) } catch (e){}
  return false;
}

// Форматирует цену
function number_format(number,decimals,dec_point,thousands_sep){var n=number,prec=decimals;var toFixedFix=function(n,prec){var k=Math.pow(10,prec);return(Math.round(n*k)/k).toString();};n=!isFinite(+n)?0:+n;prec=!isFinite(+prec)?0:Math.abs(prec);var sep=(typeof thousands_sep==='undefined')?',':thousands_sep;var dec=(typeof dec_point==='undefined')?'.':dec_point;var s=(prec>0)?toFixedFix(n,prec):toFixedFix(Math.round(n),prec);var abs=toFixedFix(Math.abs(n),prec);var _,i;if(abs>=1000){_=abs.split(/\D/);i=_[0].length%3||3;_[0]=s.slice(0,i+(n<0))+
_[0].slice(i).replace(/(\d{3})/g,sep+'$1');s=_.join(dec);}else{s=s.replace('.',dec);}
var decPos=s.indexOf(dec);if(prec>=1&&decPos!==-1&&(s.length-decPos-1)<prec){s+=new Array(prec-(s.length-decPos-1)).join(0)+'0';}
else if(prec>=1&&decPos===-1){s+=dec+new Array(prec).join(0)+'0';}
return s;}
// Превращает поле пароля в текстовое поле и обратно
// @LinkObject - ссылка по которой кликнули
// @InputObject - объект у которого нужно изменить тип поля
function ChangePasswordFieldType (LinkObject, InputObject) {
  var
	// Ссылка по которой кликнули
	LObject = $(LinkObject),
	// Объект у которого изменяем тип с password на text
	IObject = $(InputObject),
	// Старый текст ссылки
	txtOld = LObject.text(),
	// Новый текст ссылки
	txtNew = LObject.attr('rel');
  // Если объекты не получены, завершим работу функции
  if( LObject.length==0 || IObject.length==0 ) {
	return false;
  }
  // Изменяем у ссылки текст со старого на новый
  LObject.html(txtNew);
  // Старый текст ссылки сохраняем в атрибуте rel
  LObject.attr('rel', txtOld);
  // Изменяем тип input поля
  if(IObject[0].type == 'text') {
	IObject[0].type = 'password';
  } else {
	IObject[0].type = 'text';
  }
}
// Крутит изображение при обновлении картинки защиты от роботов
function RefreshImageAction(img,num,cnt) {
  if(cnt>13) {
	return false;
  }
  $(img).attr('src', $(img).attr('rel') + 'icon/refresh/' + num + '.gif');
  num = (num==6)?0:num;
  setTimeout(function(){RefreshImageAction(img, num+1, cnt+1);}, 50);
}
$(document).ready(function(){

// показывает по умолчанию размер который есть в наличии
setTimeout(function() {
		$('.goodsDataMainModificationsList').each(function() {
		var rest_value = parseInt($(this).find('[name="rest_value"]').val());
		var id = $(this).attr('rel').split('_');
		var block = $('.goodsDataMainModificationsBlock');
		if(rest_value && !block.data('select')) {
		  block.data('select', true);
		  $('.goodsDataMainModificationsBlock select option').removeAttr('selected');
		  $('.goodsDataMainModificationsBlock select option[value="' + id[0] + '"]').attr('selected', 'selected');
		  $('.goodsDataMainModificationsBlock select option[value="' + id[1] + '"]').attr('selected', 'selected');
		  $('.goodsDataMainModificationsBlock select').trigger('change');
		}
  });
  }, 200);

 
$.nyroModalSettings({
	content: 'contentCall',
	width: 400,
	minHeight: 230,
	gallery: null,
	showCloseButton: false
  });
 
 
$('.goodsListItemBlock').click(function(){
document.location = $(this).find('a').attr('href');
});

  // Кнопки на сайте если подгружен модуль Jquery.UI
  if(typeof($('input:submit, input.button').button) == "function" ) {
	$('input:submit, input.button').button();
  }
  // Валидация формы на странице оформления заказа, а так же формы на страницы связи с администрацией
  $('.order form, .feedbackForm, .clientForm, .goodsDataOpinionAddForm').validate();
  // В форме оформления заказа при клике на кнопку назад просто переходим на предыдущую страницу
  $('.order form input:submit[name="toprev"]').click(function(){
	var act = this.form.action;
	this.form.action = act + ( act.indexOf( '\?' ) > -1 ? '&' : '?' ) + 'toprev=1';
	this.form.submit();
	return false;
  });
 
  // Настройки галереи изображений
  $.nyroModalSettings({
	// из всех элементов с атрибут rel="gallery" будем создавать галерею
	gallery: 'gallery',
	// Включаем прокрутку с последнего изображения на первое
	galleryLoop: true
  });
  
  // Увеличение изображение при клике на него и открытие галереи изображений
  $('.goodsDataMainImage a, .goodsDataMainImageZoom a').click(function(){
	   
		// Идентификатор главной картинки
	var goodsImageId = $('.goodsDataMainImage input').attr("rel"),
	   
		// Маленькое изображение, по которому на самом деле будем кликать
		goodsImageIconElement = $('.goodsDataMainImagesIcon input[rel="'+goodsImageId+'"]').parent().find('a');
	// Для иконки изображения запустим галерею 
	goodsImageIconElement.nyroModalManual();
	return false;
  });
 
  // Добавление товара в корзину через ajax
  $('.goodsDataForm, .goodsToCartFromCompareForm').submit(function(){
	$(this).nyroModalManual({
	  formIndicator: 'ajax_q',  // Value added when a form is sent
	  minWidth: 420, // Minimum width
	  minHeight: 150, // Minimum height
	  gallery: null // Gallery name if provided
	});
	return false;
  });
 
  // Изменение главного изображения товара при нажатии на миниатюру
  $('.goodsDataMainImagesIcon a').click(function(){
		// Путь к среднему изображению
	var MediumImageUrl = $(this).find('img').attr('rel'),
	   
		// Главное изображение, в которое будем вставлять новое изображение
		MainImage = $('.goodsDataMainImage img'),
	   
		// В этом объекте хранится идентификатор картинки главного изображения для коректной работы галереи изображений
		MainImageIdObject = $('.goodsDataMainImage input'),
	   
		// Получаем идентификатор этого изображения из соседнего input поля
		GoodsImageIconId = $(this).parent().find('input').attr("rel");
   
	// Изменяем главное изображение
	MainImage.attr('src',MediumImageUrl);
   
	// Изменяем идентификатор главного изображения
	MainImageIdObject.attr("rel",GoodsImageIconId);
   
	return false;
  });
  // Функция собирает свойства в строку, для определения модификации товара
  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 = $('.goodsDataForm [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 || !parseInt(goodsDataModifications.filter('[rel="'+slug+'"]').find('[name="rest_value"]').val())) {
				   $(this).attr('disabled', true);
				  // Если выбрав данное значение свойства товара можно подобрать модификацию, то выделяем вариант выбора как доступный.
				  } else {
						$(this).attr('disabled', false);
				  }
				});
		  }
		});
  }
  // Обновляем возможность выбора модификации товара по свойствам. Для тех свойств, выбор по которым не возможен, отключаем такую возможность.
  // Проверяем возможность выбора на всех полях кроме первого, чтобы отключить во всех остальных варианты, которые не возможно выбрать
  updateVisibility (0);
  // Проверяем возможность выбора на всех полях кроме второго, чтобы в первом поле так же отключилась возможность выбора не существующих модификаций
  updateVisibility (1);
 
 
 
  //здесь он заканчивается
 
 
 
 
 
 
 
 
  // Изменение цены товара при изменении у товара свойства для модификации
  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		  = 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('К сожалению сейчас не получается подобрать модификацию соответствующую выбранным параметрам.');
	   }
	});
  });
 
  // Кнопка добавления товара на сравнение сравнения товаров
  $('.goodsDataCompareButton').click(function(){
	window.location.href = $(this).attr('rel') +
	($(this).attr('rel').indexOf( '\?' ) > -1 ? '&' : '?') +
	'id='+
	$('.goodsDataMainModificationId').val()+
	'&from='+
	$('input[name="form[goods_from]"]').val();
	return false;
  });
 
  // Сравнение товаров. Увеличение изображение при клике на ссылку увеличения и открытие галереии с изображениями этого товара
  $('.CompareGoodsImageZoom').click(function(){
	// Галлерея фотографий для данной модификации товаров
	var galleryBlock = $('.galleryBlock' +  $(this).attr('rel')),
	// Главное изображение товара, которое сейчас стоит у товара
	galleryMainImage = $('.CompareGoodsImageMain' +  $(this).attr('rel')),
	// Изображение по которому нужно кликнуть в галлерее изображений
	ImageIngallery = galleryBlock.find('.CompareGoodsImageGallery'+galleryMainImage.attr('rel'));
   
	// Запускаем галлерею изображений от изображения товара, чтобы если например кликнули по гайке, то и открылись гайка, а не еще какой-либо изображение этого товара
	ImageIngallery.nyroModalManual({
	  gallery: 'gallery' +  $(this).attr('rel')
	});
	return false;
  });
 
  // Сравнение товаров. Инвертирование свойств для сравнения товара
  $('.CompareCheckbox.invert').click(function(){
	var checked = true,
		checkboxes = $('.CompareCheckbox:not(.invert)');
	checkboxes.each(function(){
	  if($(this).attr('checked')) {
		checked = false;
		return false;
	  }
	});
   
	checkboxes.each(function(){
	  $(this).attr('checked', checked);
	});
   
	$(this).attr('checked', checked);
  });
 
  // Сравнение товаров. Скрытие характеристик товара, которые выделил пользователь
  $('.CompareGoodsHideSelected').click(function(){
	$('.CompareGoodsTableTbodyComparisonLine').each(function(){
	  var CheckedCheckbox = $(this).find('.CompareCheckbox:checked:not(.invert)');
	  if(CheckedCheckbox.length>0) {
		$(this).hide();
	  }
	});
	// отменяем выделение характеристик товаров
	$('.CompareCheckbox').attr('checked',false);
	return false;
  });
 
  // Сравнение товаров. Отображение скрытых характеристик товара
  $('.CompareGoodsShowAll').click(function(){
	$('.CompareGoodsTableTbodyComparisonLine:hidden').show();
	return false;
  });
 
  // Сравнение товаров. Верхняя навигация изменение фильтра на отображение всех характеристик товаров
  $('.CompareGoodsTableFilterShowAll').click(function(){
	$('.CompareGoodsTableFilterSelected').removeClass('CompareGoodsTableFilterSelected');
	$('.CompareGoodsTableTbodyComparisonLine:hidden').show();
   
	$(this).addClass('CompareGoodsTableFilterSelected');
	return false;
  });
  // Сравнение товаров. Фильтр в верхней навигации. Отображение только различающихся характеристик товара
  $('.CompareGoodsTableFilterShowOnlyDifferent').click(function(){
	$('.CompareGoodsTableFilterSelected').removeClass('CompareGoodsTableFilterSelected');
	$('.CompareGoodsTableTbodyComparisonLine:not(.same)').show();
	$('.CompareGoodsTableTbodyComparisonLine.same').hide();
	$(this).addClass('CompareGoodsTableFilterSelected');
	return false;
  });
  // Сравнение товаров. При наведении на строку сравнения, она выделяется цветом
  $('.CompareGoodsTableTbodyComparisonLine').hover(
	function () { $(this).addClass('hover'); },
	function () { $(this).removeClass('hover'); }
  );
 
  // При клике по строке выделяем свойство
  $('.CompareGoodsTableTbodyComparisonLine td:not(.ceil1)').click(function(){
	var CompareCheckbox = $(this).parent().find('.CompareCheckbox');
	if(CompareCheckbox.attr('checked')) {
	  CompareCheckbox.attr('checked', false);
	} else {
	  CompareCheckbox.attr('checked', true);
	}
  });
  // Форма регистрации нового пользователя, действие ссылки "показать пароль"
  $('.clientForm .showPass').click(function(){
	ChangePasswordFieldType(this, $('#sites_client_pass'));
	return false;
  });
 
  // Форма регистрации нового пользователя, при оформлении заказа
  $('.OrderShowPass').click(function(){
	ChangePasswordFieldType(this, $('#contactPassWord'));
	return false;
  });
  // При вводе пароля с caps lockом, покажет блок с сообщением для пользователя
  $('#sites_client_pass, #contactPassWord').capslock({
	caps_lock_on:function(){$("#caps_lock").show();},
	caps_lock_off:function(){$("#caps_lock").hide();}
  });
 
  // При оформлении заказа дадим возможность зарегистрироваться пользователю
  $('#contactWantRegister').click(function(){
	if($(this).attr("checked")) {
	  $('.contactRegisterNeedElement').show();
	  $('#contactEmail, #contactPassWord').addClass('required');
	} else {
	  $('.contactRegisterNeedElement').hide();
	  $('#contactEmail, #contactPassWord').removeClass('required');
	}
  });


  // Добавление отзыва о товаре. Рейтинг
  if(typeof($('.goodsDataOpinionTableRating').stars) == "function" ) {
	$('.goodsDataOpinionTableRating').stars({
	  inputType: "input",
	  split: 2,
	  captionEl: $(".goodsDataOpinionMsg"),
	  cancelShow: false
	});
  }
 
  // Список отзывов о товаре. Ссылка на отображение формы для добавление отзыва о товаре
  $('.goodsDataOpinionShowAddForm').click(function(){
	if(0 == $('#goodsDataOpinionAddBlock:visible').length) {
	  $('#goodsDataOpinionAddBlock').show('blind');
	} else {
	  $('#goodsDataOpinionAddBlock').hide('blind');
	  return false;
	}
  });
  // Добавление отзыва о товаре. кнопка reset скрывающая форму добавления отзыва о товаре
  $('.goodsDataOpinionAddForm input:reset').click(function(){
	$('#goodsDataOpinionAddBlock').hide('blind');
  });
  // Иконка для обновления изображение капчи
  $('.goodsDataOpinionCaptchaRefresh').click(function(){
	RefreshImageAction(this,1,1);
	$('.goodsDataOpinionCaptchaImg').attr('src',$('.goodsDataOpinionCaptchaImg').attr('src')+'&rand'+Math.random(0,10000));
	return false;
  });
 
  // Фильтры по товарам. При нажании на какую либо характеристику или свойство товара происходит фильтрация товаров
  $('.contentTbodySearchFilterBlock input').click(function(){
	$(this)[0].form.submit();
  });
  // Действия при выборе варианта доставки на этапе оформления заказа
  $('.deliveryRadio').click(function(){
   
	// Если текущая выделенная зона доставки не относится к выбранному варианту доставки, снимаем выделение с зоны доставки
	if($('.deliveryZoneRadio:checked').attr('deliveryid') != $(this).val()) {
	  $('.deliveryZoneRadio:checked').click().attr('checked', false);
	}
  });
 
  // Действия при выборе зоны внутри варианта доставки на этапе оформления заказа
  $('.deliveryZoneRadio').click(function(){
   
	var
	  deliveryId = $(this).attr('deliveryid')
	  ,deliveryZonePrice = $(this).parent().find('.deliveryZonePrice')
	  ,deliveryTbody = $('.orderStageDeliveryListTable tbody[rel="' + deliveryId + '"]')
	  ,deliveryBlock = deliveryTbody.find('#deliveryId' + deliveryId)
	  ,deliveryZonePriceBlock = deliveryTbody.find('.orderStageDeliveryZonePrice')
	  ,deliveryDefaultPriceBlock = deliveryTbody.find('.orderStageDeliveryDefaultPrice')
	;
	// Если этот пункт уже выбран, при повторном клике пользователь видимо хочет снять выделение зоны доставки
	if('true' == $(this).attr('rel')) {
	  $(this).attr('checked', false);
	  $(this).attr('rel', 'false');
	 
	  // Показываем цену по умолчанию
	  deliveryDefaultPriceBlock.show();
	  // Скрываем цену образованную от зоны
	  deliveryZonePriceBlock.hide();
	 
	// Отмечаем у всех радио баттонов зон доставки свойство говорящее что они не отмечены
	} else {
	  $('.deliveryZoneRadio').attr('rel', 'false');
	  $(this).attr('rel', 'true');
	 
	  // Показываем цену по умолчанию
	  deliveryDefaultPriceBlock.hide();
	  // Скрываем цену образованную от зоны
	  deliveryZonePriceBlock.show().html(deliveryZonePrice.html());
	 
	  // Выделяем вариант доставки к которому относится зона доставки
	  deliveryBlock.attr('checked', true);
	}
   
  });
 
  $("#deliveryConvenientDate").datepicker({
	dayNames		: ['Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье'],
	dayNamesMin	  : ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб' ],
	closeText		: 'Готово',
	currentText	  : 'Сегодня' ,
	duration		: '',
	monthNames	  : ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Окрябрь','Ноябрь','Декабрь'],
	monthNamesShort : ['Янв','Фев','Март','Апр','Май','Июнь','Июль','Авг','Сен','Окт','Ноя','Дек'],
	yearRange		: "-6:+6",
	dateFormat	  : 'dd.mm.yy',
	minDate		 : new Date(),
	firstDay		: 1
  });
});

Спасибо!

#19 Vaccina

Vaccina

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

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

Отправлено 05 Март 2013 - 00:32

У вашего товара http://zabota-mama.r...ication=3673764
модификации 104 и 110 присутствуют, и выбрать их нельзя, так как к ним применен атрибут disabled, т.е они отключены. Удалить данные модификации нельзя. Как вариант это скрыть их через css добавив в файл стилей main.css

.goodsDataMainModificationsBlockProperty option[disabled=""] {
	display: none;
}

но такой вариант может не корректно работать если у товаров несколько различных модификаций.

#20 zabota-mama

zabota-mama

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

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

Отправлено 05 Март 2013 - 19:24

Просмотр сообщенияVaccina (05 Март 2013 - 00:32) писал:

У вашего товара http://zabota-mama.r...ication=3673764
модификации 104 и 110 присутствуют, и выбрать их нельзя, так как к ним применен атрибут disabled, т.е они отключены. Удалить данные модификации нельзя. Как вариант это скрыть их через css добавив в файл стилей main.css

.goodsDataMainModificationsBlockProperty option[disabled=""] {
display: none;
}

но такой вариант может не корректно работать если у товаров несколько различных модификаций.

Вакцина,
Меня полностью устраивает, что сейчас их нельзя выбрать. Спасибо!

Единственное, помогите применить к существующим размерам жирное начертание.
Тогда список размеров будет выглядеть так:
98
104
110
116




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

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