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


Изменение Типа Выбора Модификации


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

#161 Danil

Danil

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

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

Отправлено 04 Сентябрь 2014 - 11:38

Просмотр сообщенияgrappp (04 Сентябрь 2014 - 08:19) писал:

Все отображается как нужно, но вот при смене модификации, цена не меняется.

Изображение

Здравствуйте.
На примере какого товара можно посмотреть данную ошибку?

#162 grappp

grappp

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

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

Отправлено 04 Сентябрь 2014 - 11:48

Просмотр сообщенияDanil (04 Сентябрь 2014 - 11:38) писал:

Здравствуйте.
На примере какого товара можно посмотреть данную ошибку?

Отправил пример Вам в личные сообщения.

#163 Danil

Danil

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

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

Отправлено 04 Сентябрь 2014 - 13:18

Просмотр сообщенияgrappp (04 Сентябрь 2014 - 11:48) писал:

Отправил пример Вам в личные сообщения.

Произведите замену кода в main.js, из сообщения №2.

#164 grappp

grappp

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

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

Отправлено 04 Сентябрь 2014 - 17:04

Просмотр сообщенияDanil (04 Сентябрь 2014 - 13:18) писал:

Произведите замену кода в main.js, из сообщения №2.

К нужному результату это не привело к сожалению.

#165 grappp

grappp

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

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

Отправлено 04 Сентябрь 2014 - 23:19

Просмотр сообщенияDanil (04 Сентябрь 2014 - 13:18) писал:

Произведите замену кода в main.js, из сообщения №2.

Замену произвел! Цена все равно не меняется. Возможно я еще где-то ошибся. Помогите, пожалуйста.

#166 Сake

Сake

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

  • Модератоpы
  • 5 979 сообщений

Отправлено 05 Сентябрь 2014 - 01:17

Вы произвели не все изменения для файла main.js Найдите в вашем файле main.js следующий код

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

и замените его на

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


#167 grappp

grappp

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

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

Отправлено 05 Сентябрь 2014 - 09:18

Просмотр сообщенияСake (05 Сентябрь 2014 - 01:17) писал:

Вы произвели не все изменения для файла main.js Найдите в вашем файле main.js следующий код

Замену произвел. Изменений к сожалению нет.

#168 grappp

grappp

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

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

Отправлено 05 Сентябрь 2014 - 10:08

Вопрос решен. Всем спасибо за участие.

P.S. Сделал по инструкции из поста #41 + пост #47

#169 melisa

melisa

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

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

Отправлено 06 Сентябрь 2014 - 23:24

Просмотр сообщенияgrappp (05 Сентябрь 2014 - 10:08) писал:

Вопрос решен. Всем спасибо за участие.

P.S. Сделал по инструкции из поста #41 + пост #47

А у меня  не получается ((
из поста #41 - сделала  появились столбики , НО во первых выбирать можно  любой размер и цвет  даже  такие варианты которых  нет , в корзину же попадает  только  вариант по умолчанию  ....

прибавила к этому  
пост #47 , вообще  ничего в корзину положить невозможно , выдает ошибку на странице .  
ну и далее даже если бы все получилось идеально , у меня только одних  размеров  более десятка + цвета  , если это все будет идти в один столбик ..... это тихий ужас  ,  если уж  в строчку нельзя это сделать , то может хоть столбики с размером и цветом будут разные ??

Просьба  еще раз   прописать где какие коды править , т.к  ветка  загажена посторонними вопросами  и уже непонятно совершенно что  исправлять в своих файлах а что нет .   Если что  SL - 253933  , шаблон весна .
Изображение
Изображение

#170 Сake

Сake

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

  • Модератоpы
  • 5 979 сообщений

Отправлено 09 Сентябрь 2014 - 01:37

На данный момент (судя по вашему сайту) изменения у вас отсутствуют. Для выполнения замены отображения модификаций вам необходимо в шаблоне "Товар" выполнить изменение html кода - найдите подобный код

<!-- Если это первый элемент в списке -->
																  {% IF goods_modifications_properties.values.first %}
																		<strong>{goods_modifications_properties.NAME}:</strong><br />
																		<select name="form[properties][]">
																  {% ENDIF %}
					   
																		<option value="{goods_modifications_properties.values.ID}" {% IF goods_modifications_properties.values.SELECTED %}selected="selected"{% ENDIF %}>{goods_modifications_properties.values.NAME}</option>
					   
																  <!-- Если это последний элемент в списке -->
																  {% IF goods_modifications_properties.values.last %}
																		</select>
																  {% ENDIF %}

и замените его на

<!-- Если это первый элемент в списке -->
																  {% IF goods_modifications_properties.values.first %}
																		<strong>{goods_modifications_properties.NAME}:</strong><br />
																  {% ENDIF %}
																				  
														  <input type="radio" name="form[properties][]" value="{goods_modifications_properties.values.ID}" {% IF goods_modifications_properties.values.SELECTED %}checked="checked"{% ENDIF %} />   {goods_modifications_properties.values.NAME} <br />

после этого в файле main.js найдите код

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

и замените его на

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


#171 grappp

grappp

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

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

Отправлено 09 Сентябрь 2014 - 21:08

Все работает, но работает только на десктопных браузерах. Если заходить в магазин с мобильного устройства любой платформы, то выбор модификаций не работает.

Помогите, пожалуйста понять в чем дело и решить данный вопрос.

#172 Сake

Сake

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

  • Модератоpы
  • 5 979 сообщений

Отправлено 10 Сентябрь 2014 - 01:00

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

#173 grappp

grappp

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

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

Отправлено 10 Сентябрь 2014 - 13:16

Просмотр сообщенияСake (10 Сентябрь 2014 - 01:00) писал:

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

Спасибо. Уже разобрался. Проблема была только с одним товаром. Просто неправильно заполнена модификация была. Извините за беспокойство.

#174 krohotylja

krohotylja

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

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

Отправлено 10 Октябрь 2014 - 20:13

Sos Все поменяла вроде по инструкции. Но теперь не меняется надпись: Товар есть в наличии и товара нет в наличии. Какие то модификации есть каких то нет , а показывает. что все в наличии. Как исправить. И еще прикрепленные к модификации изображения не отображаются. а хотелось бы чтобы при выборе цвета рядом открывалась превьюшка, уже поняла что фото при смене модификации меняться не будет, а жаль. печалька.

#175 Сake

Сake

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

  • Модератоpы
  • 5 979 сообщений

Отправлено 11 Октябрь 2014 - 02:42

Найдите в вашем файле main.js следующий код

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


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

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

  // Изменение цены товара при изменении у товара свойства для модификации
  goodsDataProperties.each(function(){
		$(this).click(function(){
		$(this).find('input[type="radio"]').click(function(){
		  var slug = getSlugFromGoodsDataFormModificationsProperties(goodsDataProperties),
				  modificationBlock					  = goodsDataModifications.filter('[rel="'+slug+'"]'),
				  modificationId								= parseInt(modificationBlock.find('[name="id"]').val()),
				  modificationArtNumber		  = modificationBlock.find('[name="art_number"]').val(),
				  modificationPriceNow			= parseFloat(modificationBlock.find('[name="price_now"]').val()),
				  modificationPriceNowFormated  = modificationBlock.find('.price_now_formated').html(),
				  modificationPriceOld			= parseFloat(modificationBlock.find('[name="price_old"]').val()),
				  modificationPriceOldFormated  = modificationBlock.find('.price_old_formated').html(),
				  modificationRestValue		  = parseFloat(modificationBlock.find('[name="rest_value"]').val()),
				  modificationDescription		  = modificationBlock.find('.description').html(),
				  modificationMeasureId		  = parseInt(modificationBlock.find('[name="measure_id"]').val()),
				  modificationMeasureName		  = modificationBlock.find('[name="measure_name"]').val(),
				  modificationMeasureDesc		  = modificationBlock.find('[name="measure_desc"]').val(),
				  modificationMeasurePrecision  = modificationBlock.find('[name="measure_precision"]').val(),
				  modificationIsHasInCompareList= modificationBlock.find('[name="is_has_in_compare_list"]').val(),
				  goodsModificationId			  = $('.goodsDataMainModificationId'),
				  goodsPriceNow						  = $('.goodsDataMainModificationPriceNow'),
				  goodsPriceOld						  = $('.goodsDataMainModificationPriceOld'),
				  goodsAvailable								= $('.goodsDataMainModificationAvailable'),
				  goodsAvailableTrue					= goodsAvailable.find('.available-true'),
				  goodsAvailableFalse			  = goodsAvailable.find('.available-false'),
				  goodsArtNumberBlock			  = $('.goodsDataMainModificationArtNumber'),
				  goodsArtNumber								= goodsArtNumberBlock.find('span');
				  goodsCompareAddButton		  = $('.goodsDataCompareButton.add');
				  goodsCompareDeleteButton		= $('.goodsDataCompareButton.delete');
				  goodsModDescriptionBlock		= $('.goodsDataMainModificationsDescriptionBlock');
		  
		  
		   // Изменяем данные товара для выбранных параметров. Если нашлась выбранная модификация
		   if(modificationBlock.length) {
				 // Цена товара
				 goodsPriceNow.html(modificationPriceNowFormated);
 
				 // Старая цена товара
				 if(modificationPriceOld>modificationPriceNow) {
				  goodsPriceOld.html(modificationPriceOldFormated);
				 } else {
				   goodsPriceOld.html('');
				 }
				
				 // Есть ли товар есть в наличии
				 if(modificationRestValue>0) {
				   goodsAvailableTrue.show();
				   goodsAvailableFalse.hide();
				 // Если товара нет в наличии
				 } else {
				   goodsAvailableTrue.hide();
				   goodsAvailableFalse.show();
				 }
				 // Если товар есть в списке сравнения
				 if(modificationIsHasInCompareList>0) {
				   goodsCompareAddButton.hide();
				   goodsCompareDeleteButton.show();
				 // Если товара нет в списке сравнения
				 } else {
				   goodsCompareAddButton.show();
				   goodsCompareDeleteButton.hide();
				 }
				
				 // Покажем артикул модификации товара, если он указан
				 if(modificationArtNumber.length>0) {
				   goodsArtNumberBlock.show();
				   goodsArtNumber.html(modificationArtNumber);
				 // Скроем артикул модификации товара, если он не указан
				 } else {
				   goodsArtNumberBlock.hide();
				   goodsArtNumber.html('');
				 }
				 // Описание модификации товара. Покажем если оно есть, спрячем если его у модификации нет
				 if(modificationDescription.length > 0) {
				   goodsModDescriptionBlock.show().html('<div>' + modificationDescription + '</div>');
				 } else {
				   goodsModDescriptionBlock.hide().html();
				 }
				
				
				 // Идентификатор товарной модификации
				 goodsModificationId.val(modificationId);
				 window.location.hash = '?modification='+modificationId;
		   } else {
				 // Отправим запись об ошибке на сервер
				 sendError('no modification by slug '+slug);
				 alert('К сожалению сейчас не получается подобрать модификацию соответствующую выбранным параметрам.');
		   }
		  
		   // Обновляем возможность выбора другой модификации для текущих значений свойств модификации товара.
		   updateVisibility(y);
		});
  });
 
  // Кнопка добавления товара на сравнение сравнения товаров

и замените его на

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


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

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

  // Изменение цены товара при изменении у товара свойства для модификации
  goodsDataProperties.each(function(){
		$(this).click(function(){
		  var slug = getSlugFromGoodsDataFormModificationsProperties(goodsDataProperties),
				  modificationBlock					  = goodsDataModifications.filter('[rel="'+slug+'"]'),
				  modificationId								= parseInt(modificationBlock.find('[name="id"]').val()),
				  modificationArtNumber		  = modificationBlock.find('[name="art_number"]').val(),
				  modificationPriceNow			= parseFloat(modificationBlock.find('[name="price_now"]').val()),
				  modificationPriceNowFormated  = modificationBlock.find('.price_now_formated').html(),
				  modificationPriceOld			= parseFloat(modificationBlock.find('[name="price_old"]').val()),
				  modificationPriceOldFormated  = modificationBlock.find('.price_old_formated').html(),
				  modificationRestValue		  = parseFloat(modificationBlock.find('[name="rest_value"]').val()),
				  modificationDescription		  = modificationBlock.find('.description').html(),
				  modificationMeasureId		  = parseInt(modificationBlock.find('[name="measure_id"]').val()),
				  modificationMeasureName		  = modificationBlock.find('[name="measure_name"]').val(),
				  modificationMeasureDesc		  = modificationBlock.find('[name="measure_desc"]').val(),
				  modificationMeasurePrecision  = modificationBlock.find('[name="measure_precision"]').val(),
				  modificationIsHasInCompareList= modificationBlock.find('[name="is_has_in_compare_list"]').val(),
				  goodsModificationId			  = $('.goodsDataMainModificationId'),
				  goodsPriceNow						  = $('.goodsDataMainModificationPriceNow'),
				  goodsPriceOld						  = $('.goodsDataMainModificationPriceOld'),
				  goodsAvailable								= $('.goodsDataMainModificationAvailable'),
				  goodsAvailableTrue					= goodsAvailable.find('.available-true'),
				  goodsAvailableFalse			  = goodsAvailable.find('.available-false'),
				  goodsArtNumberBlock			  = $('.goodsDataMainModificationArtNumber'),
				  goodsArtNumber								= goodsArtNumberBlock.find('span'),
				  goodsCompareAddButton		  = $('.goodsDataCompareButton.add'),
				  goodsCompareDeleteButton		= $('.goodsDataCompareButton.delete'),
				  goodsModDescriptionBlock		= $('.goodsDataMainModificationsDescriptionBlock');
		  
		  
		   // Изменяем данные товара для выбранных параметров. Если нашлась выбранная модификация
		   if(modificationBlock.length) {
				 // Цена товара
				 goodsPriceNow.html(modificationPriceNowFormated);
 
				 // Старая цена товара
				 if(modificationPriceOld>modificationPriceNow) {
				  goodsPriceOld.html(modificationPriceOldFormated);
				 } else {
				   goodsPriceOld.html('');
				 }
				
				 // Есть ли товар есть в наличии
				 if(modificationRestValue>0) {
				   goodsAvailableTrue.show();
				   goodsAvailableFalse.hide();
				 // Если товара нет в наличии
				 } else {
				   goodsAvailableTrue.hide();
				   goodsAvailableFalse.show();
				 }
				 // Если товар есть в списке сравнения
				 if(modificationIsHasInCompareList>0) {
				   goodsCompareAddButton.hide();
				   goodsCompareDeleteButton.show();
				 // Если товара нет в списке сравнения
				 } else {
				   goodsCompareAddButton.show();
				   goodsCompareDeleteButton.hide();
				 }
				
				 // Покажем артикул модификации товара, если он указан
				 if(modificationArtNumber.length>0) {
				   goodsArtNumberBlock.show();
				   goodsArtNumber.html(modificationArtNumber);
				 // Скроем артикул модификации товара, если он не указан
				 } else {
				   goodsArtNumberBlock.hide();
				   goodsArtNumber.html('');
				 }
				 // Описание модификации товара. Покажем если оно есть, спрячем если его у модификации нет
				 if(modificationDescription.length > 0) {
				   goodsModDescriptionBlock.show().html('<div>' + modificationDescription + '</div>');
				 } else {
				   goodsModDescriptionBlock.hide().html();
				 }
				
				
				 // Идентификатор товарной модификации
				 goodsModificationId.val(modificationId);
				 window.location.hash = '?modification='+modificationId;
		   } else {
				 // Отправим запись об ошибке на сервер
				 sendError('no modification by slug '+slug);
				 alert('К сожалению сейчас не получается подобрать модификацию соответствующую выбранным параметрам.');
		   }
		  
		   // Обновляем возможность выбора другой модификации для текущих значений свойств модификации товара.
		   updateVisibility(y);
		});
  });
 
  // Кнопка добавления товара на сравнение сравнения товаров


#176 krohotylja

krohotylja

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

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

Отправлено 11 Октябрь 2014 - 11:13

Просмотр сообщенияСake (11 Октябрь 2014 - 02:42) писал:

Найдите в вашем файле main.js следующий код

Теперь выдает JS ошибку при смене модификации

#177 Ирина345

Ирина345

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

  • Модераторы
  • 5 709 сообщений

Отправлено 12 Октябрь 2014 - 17:25

Просмотр сообщенияkrohotylja (11 Октябрь 2014 - 11:13) писал:

Теперь выдает JS ошибку при смене модификации
Здравствуйте, протестировали данной ошибок не обнаружили,
Возможно требуется обновить страницу

#178 Moriarti

Moriarti

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

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

Отправлено 03 Ноябрь 2014 - 20:20

Здравствуйте уважаемые модераторы!
Подскажите пжл решение проблемы.
Шаблон движение.
Изменил тип выбора модификации как было указано выше. в карточке товара изменения произошли, но когда меняю модификацию на другую цена не изменяется и в корзину добавляется не то что я выбираю.
Аккаунт SL-316488

#179 Ирина345

Ирина345

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

  • Модераторы
  • 5 709 сообщений

Отправлено 05 Ноябрь 2014 - 17:56

Просмотр сообщенияViktor87 (03 Ноябрь 2014 - 20:20) писал:

Здравствуйте уважаемые модераторы!
Подскажите пжл решение проблемы.
Шаблон движение.
Изменил тип выбора модификации как было указано выше. в карточке товара изменения произошли, но когда меняю модификацию на другую цена не изменяется и в корзину добавляется не то что я выбираю.
Аккаунт SL-316488
Здравствуйте, выполните инструкцию из сообщения #175

#180 Moriarti

Moriarti

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

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

Отправлено 05 Ноябрь 2014 - 18:05

Сделал выходит ошибка.

Прикрепленные изображения

  • 147.JPG





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

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