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


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


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

#361 Santos

Santos

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

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

Отправлено 29 September 2024 - 20:06

Здравствуйте.
Большое спасибо!...все получилось.

Единственное, на странице товара появился лишний элемент - ТИРЕ в цене товара со скидкой (фото прилагаю).
Подскажите, как это тире убрать? все просмотрел, не пойму от куда оно появляется.

111.png

И еще вопросик, в "Лидере" карточка товара - при клике на цвет появляется главная картинка с нужным цветом товара, подскажите как это сделать у меня в шаблоне "Детский".
Заранее спасибо!

акк. SL-204384

#362 Vaccina

Vaccina

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

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

Отправлено 03 October 2024 - 03:31

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

Зайдите в раздел Сайт - Редактор шаблонов - main.js - найдите:
		 // Старая цена товара
		 if(modificationPriceOld > modificationPriceNow) {
				 goodsPriceOld.html('— ' +modificationPriceOldFormated);
    
замените на:
		 // Старая цена товара
		 if(modificationPriceOld > modificationPriceNow) {
				 goodsPriceOld.html(modificationPriceOldFormated);
    
По поводу цвета, функционал для смены главного фото у вас присутствует, пришлите пожалуйста ссылку без указания домена на товар, где для каждой модификации указано своё фото.

#363 status321

status321

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

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

Отправлено 28 September 2026 - 21:44

Здравствуйте. Возможно ли реализовать так чтобы скрывалась модификация которой нет в наличии. Шаблон Техно. Аккаунт SL-570632

#364 Vaccina

Vaccina

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

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

Отправлено 30 September 2026 - 06:34

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

Зайдите в раздел Сайт - Редактор шаблонов - main.js - в самом конце вставьте:
$(document).ready(function() {
  $('.goodsDataMainModificationsList').each(function() {
	var restValue = parseInt($(this).find('input[name="rest_value"]').val());   
	if (restValue === 0) {
	  var propertyId = $(this).attr('rel');
	  if (propertyId) {
		$('.goodsDataMainModificationsBlockProperty select.selectBox option[value="' + propertyId + '"]').remove();
	  }
	}
  });
});


#365 status321

status321

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

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

Отправлено 30 September 2026 - 21:04

Спасибо, Еще как решить чтобы свойства "Выбрать простынь" которых нет в наличии скрывались.

#366 stasia

stasia

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

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

Отправлено 01 October 2026 - 21:02

Просмотр сообщенияstatus321 (30 September 2026 - 21:04) писал:

Спасибо, Еще как решить чтобы свойства "Выбрать простынь" которых нет в наличии скрывались.

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

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

#367 status321

status321

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

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

Отправлено 02 October 2026 - 07:42

Здравствуйте. Вот ссылка: https://dxmarket.ru/...-rezinke-msr012

#368 stasia

stasia

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

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

Отправлено 05 October 2026 - 14:39

Просмотр сообщенияstatus321 (02 October 2026 - 07:42) писал:

Здравствуйте. Вот ссылка: https://dxmarket.ru/...-rezinke-msr012

Здравствуйте.
1) Перейдите в раздел Сайт---Редактор шаблонов---Товар, и найдите код:
					<select name="form[properties][]" class="selectBox">

Замените его на данный код:
					<select name="form[properties][]" class="selectBox {% IF goods_modifications_properties.ID = 2454970 %}block__elem{% ENDIF %}">


2) Зайдите в раздел: Сайт---Редактор шаблонов---main.js, и найдите код:
	// Запоминаем поля выбора свойств, для ускорения работы со значениями свойств
	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);
		  }
		});
	  }
	});
  }
  // Обновляем возможность выбора модификации товара по свойствам. Для тех свойств, выбор по которым не возможен, отключаем такую возможность.

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

// Обновляет возможность выбора свойств модификации
function updateVisibility(y) {
  goodsDataProperties.each(function (j) {
	if (j != y) {
	  var currentSelect = $(this);
	  // Ограничение по остатку применяем только к селекту с классом block__elem
	  var applyRestCheck = currentSelect.hasClass('block__elem');

	  currentSelect.find('option').each(function () {
		var checkProperties = new Array();
		$(goodsDataProperties).each(function (i) {
		  checkProperties[i] = parseInt($(this).val());
		});
		checkProperties[j] = parseInt($(this).attr('value'));
		var slug = checkProperties.sort(function (a, B) {
		  return a - b;
		}).join('_');

		var modificationBlock = goodsDataModifications.filter('[rel="' + slug + '"]');
	  
		if (!modificationBlock.length) {
		  // Модификации нет — скрываем и отключаем
		  $(this).show().attr('disabled', true);
		} else if (applyRestCheck) {
		  // Это "Выбрать простынь" — проверяем остаток
		  var restValue = parseFloat(modificationBlock.find('[name="rest_value"]').val());
		  if (isNaN(restValue) || restValue <= 0) {
			// Остатка нет — скрываем и отключаем
			$(this).hide().attr('disabled', true);
		  } else {
			// Остаток есть — показываем и включаем
			$(this).show().attr('disabled', false);
		  }
		} else {
		  // Остальные свойства — только факт существования
		  $(this).show().attr('disabled', false);
		}
	  });
	}
  });
}
  // Обновляем возможность выбора модификации товара по свойствам. Для тех свойств, выбор по которым не возможен, отключаем такую возможность.


#369 status321

status321

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

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

Отправлено 05 October 2026 - 18:05

Здравствуйте. Выдает 1 Ошибка JS

#370 status321

status321

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

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

Отправлено 06 October 2026 - 16:06

Просмотр сообщенияVaccina (30 September 2026 - 06:34) писал:

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

Зайдите в раздел Сайт - Редактор шаблонов - main.js - в самом конце вставьте:
$(document).ready(function() {
$('.goodsDataMainModificationsList').each(function() {
var restValue = parseInt($(this).find('input[name="rest_value"]').val());
if (restValue === 0) {
	 var propertyId = $(this).attr('rel');
	 if (propertyId) {
	 $('.goodsDataMainModificationsBlockProperty select.selectBox option[value="' + propertyId + '"]').remove();
	 }
}
});
});

Здравствуйте. Не корректно работает. Есть только одна модификация в наличии, показывает что НЕТ? Если в наличии есть 2 модификации выдает правильно.
https://dxmarket.ru/...od_id=323116204




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

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