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


Карточка Товаров Вывод Свойств

свойства карточка товара

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

#1 magiya1984

magiya1984

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

  • Пользователи
  • PipPipPipPip
  • 439 сообщений
  • ГородМосква

Отправлено 06 Август 2017 - 12:25

Всем привет!!
У меня сейчас в карточке товара вывод свойств осуществляется по наличию хотя бы одной модификации.
Как сделать чтобы цена тоже играла роль т.е попадая в карточку

http://bell-m.ru/goo...buk-volokno-PPU

сразу показывается самая большая цена хотя есть свойства в наличии у которых цена меньше.
вот мне и надо что бы в первую очередь показывалось свойство которое есть в наличии и  у которого мин. цена а потом все остальные.

Заранее спасибо!!!

Аккаунт SL-420030

#2 Ирина345

Ирина345

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

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

Отправлено 07 Август 2017 - 14:18

Просмотр сообщенияmagiya1984 (06 Август 2017 - 12:25) писал:

Всем привет!!
У меня сейчас в карточке товара вывод свойств осуществляется по наличию хотя бы одной модификации.
Как сделать чтобы цена тоже играла роль т.е попадая в карточку

http://bell-m.ru/goo...buk-volokno-PPU

сразу показывается самая большая цена хотя есть свойства в наличии у которых цена меньше.
вот мне и надо что бы в первую очередь показывалось свойство которое есть в наличии и  у которого мин. цена а потом все остальные.

Заранее спасибо!!!

Аккаунт SL-420030
Здравствуйте, отсортировать модификации в карточки товара можно только по наличию, по цене нельзя.

#3 magiya1984

magiya1984

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

  • Пользователи
  • PipPipPipPip
  • 439 сообщений
  • ГородМосква

Отправлено 07 Август 2017 - 16:03

Я долго думал как обыграть ситуацию. Скажите можно ли реализовать input через радио кнопки вместо селект тогда и отпадет возможность обрабатывать свойства по наличию скриптом так как они всегда будут раскрыты. Тема есть на форуме но она от 12 года реализовать по ней не смог. Прошу помочь.
Заранее спасибо.

#4 magiya1984

magiya1984

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

  • Пользователи
  • PipPipPipPip
  • 439 сообщений
  • ГородМосква

Отправлено 08 Август 2017 - 11:12

Ребят ответите на мой вопрос?

#5 magiya1984

magiya1984

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

  • Пользователи
  • PipPipPipPip
  • 439 сообщений
  • ГородМосква

Отправлено 08 Август 2017 - 15:58

Просмотр сообщенияИрина345 (07 Август 2017 - 14:18) писал:

Здравствуйте, отсортировать модификации в карточки товара можно только по наличию, по цене нельзя.
Ирина здравствуйте!!! Помогите пожалуйста с моим вопросом а то мне кажется этот пост уже затерялся.

Скажите можно ли реализовать input через радио кнопки вместо селект тогда и отпадет возможность обрабатывать свойства по наличию скриптом так как они всегда будут раскрыты. Тема есть на форуме но она от 12 года реализовать по ней не смог. Прошу помочь.
Заранее спасибо.

#6 Ирина345

Ирина345

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

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

Отправлено 09 Август 2017 - 13:35

Просмотр сообщенияmagiya1984 (08 Август 2017 - 15:58) писал:

Ирина здравствуйте!!! Помогите пожалуйста с моим вопросом а то мне кажется этот пост уже затерялся.

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

в файле main.js найдите


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

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

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

  // Изменение цены товара при изменении у товара свойства для модификации
  goodsDataProperties.each(function(){
	$(this).change(function(){
замените на

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

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


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

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

  // Изменение цены товара при изменении у товара свойства для модификации
goodsDataProperties.each(function(y){
  
   $(this).find('input[type="radio"]').click(function(){


#7 magiya1984

magiya1984

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

  • Пользователи
  • PipPipPipPip
  • 439 сообщений
  • ГородМосква

Отправлено 09 Август 2017 - 14:02

Просмотр сообщенияИрина345 (09 Август 2017 - 13:35) писал:

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

в файле main.js найдите


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

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

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

// Изменение цены товара при изменении у товара свойства для модификации
goodsDataProperties.each(function(){
$(this).change(function(){
замените на

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

var
	 // Запоминаем поля выбора свойств, для ускорения работы со значениями свойств
	 goodsDataProperties = $('.goodsDataMainModificationsBlockProperty'),

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


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

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

// Изменение цены товара при изменении у товара свойства для модификации
goodsDataProperties.each(function(y){

$(this).find('input[type="radio"]').click(function(){
Ирина спасибо то что надо





Темы с аналогичным тегами свойства, карточка товара

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

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