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


Автоматическая Подстановка При Нескольких Модификациях Товара Который Остался В Наличии

модификации в наличии

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

#1 Anatoly

Anatoly

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

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

Отправлено 10 Март 2018 - 19:56

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

Есть такая проблема. В карточке товара есть несколько модификаций, например 5 цветов на выбор. И если допустим 4-ех цветов уже нет в наличии, то кнопки заказа могут не показываться и клиент не видит кнопок чтобы заказать и не поймет что делать и уйдет, но 1 цвет же есть в наличии. А кнопки заказа появятся только тогда, когда нажмешь на выбор цвета и выберешь именно тот один цвет что в наличии. Да и если 4 из 5 цвета в наличии, а первым стоит цвет который закончился, то соответственно и кнопок сразу не будет видно. Чтобы они появились надо нажать на выбор других цветов. Но это совсем не понятно. Далеко не каждый клиент поймет что надо нажать на выбор цвета. Это большая проблема.

Можно сделать так, чтобы если заканчивался определенный цвет товара, а остальные есть в наличии, то кнопки не пропадали что нет товара, а автоматом подстраивался цвет что есть в наличии и так до конца, пока не будет совсем никаких цветов. Т.е. что нет в наличии, то нет и кнопок, так и оставить, а автоматом подстраивался цвет что остался в наличии.  Ну т.е. чтобы не было такого что клиент заходит на карточку и не видит кнопок заказа, а оказывается несколько цветов еще есть в наличии.

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

#2 Vaccina

Vaccina

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

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

Отправлено 13 Март 2018 - 07:05

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

Подобный вопрос рассматривался у нас на форуме и имеет инструкцию по следующей ссылке:
https://forum.storel...кар/#entry40271

#3 Anatoly

Anatoly

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

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

Отправлено 13 Март 2018 - 10:08

Просмотр сообщенияVaccina (13 Март 2018 - 07:05) писал:

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

Подобный вопрос рассматривался у нас на форуме и имеет инструкцию по следующей ссылке:
https://forum.storel...кар/#entry40271

Здравствуйте!
Как там вставил в main.js после строчки

$(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);

Но это не совсем корректно работает. Если у меня уже открыта страница товара во вкладке браузера, то в редакторе вставляю код, настраиваю кол-во товара, например из 5 в наличии 2. Возвращаюсь на ОТКРЫТУЮ страницу товара, обновляю страницу, все работает отлично. НО
Когда я закрываю страницу с этим товаром, потом перехожу в каталог и оттуда опять захожу на эту же страницу товара, то код уже не работает, он как я понял стал всегда показывать первую строку выпадающего списка. И после что ни делай все равно будет показывать первую строку списка, хоть есть в наличии хоть нет.

И при обновлении страницы на мгновение промелькает то что где-то в модификации есть товар в наличии, но потом подгружается скрипт и перекидывает на первую строку выпадающего списка.

Как это поправить?


Сейчас поставил чуть другой код, с этим вроде пока все правильно работает. Спасибо
Вот этот код поставил

setTimeout(function() {
                                $('.ModificationsList').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);
                                  $('.goodsDataMainModificationsBlockProperty select option').removeAttr('selected');
                                  $('.goodsDataMainModificationsBlockProperty select option[value="' + id[0] + '"]').attr('selected', 'selected');
                                  $('.goodsDataMainModificationsBlockProperty select option[value="' + id[1] + '"]').attr('selected', 'selected');
                                  $('.goodsDataMainModificationsBlockProperty select').trigger('change');
                                }
  });
  }, 200);

#4 Anatoly

Anatoly

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

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

Отправлено 18 Март 2018 - 12:54

Просмотр сообщенияAnatoly (13 Март 2018 - 10:08) писал:

Здравствуйте!
Как там вставил в main.js после строчки

$(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);

Но это не совсем корректно работает. Если у меня уже открыта страница товара во вкладке браузера, то в редакторе вставляю код, настраиваю кол-во товара, например из 5 в наличии 2. Возвращаюсь на ОТКРЫТУЮ страницу товара, обновляю страницу, все работает отлично. НО
Когда я закрываю страницу с этим товаром, потом перехожу в каталог и оттуда опять захожу на эту же страницу товара, то код уже не работает, он как я понял стал всегда показывать первую строку выпадающего списка. И после что ни делай все равно будет показывать первую строку списка, хоть есть в наличии хоть нет.

И при обновлении страницы на мгновение промелькает то что где-то в модификации есть товар в наличии, но потом подгружается скрипт и перекидывает на первую строку выпадающего списка.

Как это поправить?


Сейчас поставил чуть другой код, с этим вроде пока все правильно работает. Спасибо
Вот этот код поставил

setTimeout(function() {
$('.ModificationsList').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);
  $('.goodsDataMainModificationsBlockProperty select option').removeAttr('selected');
  $('.goodsDataMainModificationsBlockProperty select option[value="' + id[0] + '"]').attr('selected', 'selected');
  $('.goodsDataMainModificationsBlockProperty select option[value="' + id[1] + '"]').attr('selected', 'selected');
  $('.goodsDataMainModificationsBlockProperty select').trigger('change');
}
  });
  }, 200);



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

Все же не понятно этот код работает. Добавлял новые товары, так на них он в обратную сторону работает. Вставляю второй вариант кода для смены модификации товаров в наличии или нет, для новых товаров работает отлично, а вот для старых не работает теперь. Сделал новую карточку на старый товар, но смысла нет, все равно старый товар не работает с новым кодом. Теперь не понятно что делать.

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



Как сейчас работает:

Поставил я изначально этот код, с которым все хорошо менялось как я и писал выше

в main.js после строчки

$(document).ready(function(){

вставил код

setTimeout(function() {
$('.ModificationsList').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);
  $('.goodsDataMainModificationsBlockProperty select option').removeAttr('selected');
  $('.goodsDataMainModificationsBlockProperty select option[value="' + id[0] + '"]').attr('selected', 'selected');
  $('.goodsDataMainModificationsBlockProperty select option[value="' + id[1] + '"]').attr('selected', 'selected');
  $('.goodsDataMainModificationsBlockProperty select').trigger('change');
}
  });
  }, 200);


Возьмем 2 товара, это старый который работал https://gumilon.ru/g...od_id=150560409
и новый https://gumilon.ru/g...od_id=150551830 который уже не работает с этим старым куском кода.


Взял другой код

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);

С ним новый товар заработал https://gumilon.ru/g...od_id=150551830 , а вот старый товар уже перестал работать https://gumilon.ru/g...od_id=150560409

Сейчас оставил пока последний вариант. Жду очень вашего ответа.

#5 Anatoly

Anatoly

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

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

Отправлено 21 Март 2018 - 09:19

Ребят помогите с вопросом выше пожалуйста.

#6 Vaccina

Vaccina

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

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

Отправлено 22 Март 2018 - 08:01

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

Зайдите в раздел Сайт - Редактор шаблонов - main.js - найдите и удалите:
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);

далее зайдите в шаблон Товар - в самом конце пропишите:
{% IF GOODS_MOD_REST_VALUE=0 %}
<script>
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 > 0) {
	  block.data('select', true);
	  console.log(block);
	  $('.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);
</script>
{% ENDIF %}


#7 Anatoly

Anatoly

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

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

Отправлено 22 Март 2018 - 08:20

Просмотр сообщенияVaccina (22 Март 2018 - 08:01) писал:

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

Зайдите в раздел Сайт - Редактор шаблонов - main.js - найдите и удалите:
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);

далее зайдите в шаблон Товар - в самом конце пропишите:
{% IF GOODS_MOD_REST_VALUE=0 %}
<script>
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 > 0) {
	 block.data('select', true);
	 console.log(block);
	 $('.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);
</script>
{% ENDIF %}

Большое спасибо!

#8 Милый Мишка

Милый Мишка

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

  • Пользователи
  • PipPipPipPip
  • 247 сообщений
  • ГородНижний Новгород

Отправлено 05 Февраль 2019 - 17:59

Добрый день. Просьба выложить инструкцию для шаблона Агат, поскольку старые инструкции для этого шаблона не работают.

#9 Vaccina

Vaccina

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

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

Отправлено 09 Февраль 2019 - 02:20

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

Зайдите в раздел Сайт - Редактор шаблонов - Товар - в самом конце вставьте:
{% IF GOODS_MOD_REST_VALUE=0 %}
<script>
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 > 0) {
		 block.data('select', true);
		 $('.goodsDataMainModificationsBlock select option').removeAttr('selected');
		 $('.goodsDataMainModificationsBlock .modification_values div[data-value="' + id[0] + '"]').click();
		 $('.goodsDataMainModificationsBlock .modification_values div[data-value="' + id[1] + '"]').click();
		 $('.goodsDataMainModificationsBlock .modification_values div').trigger('click');
}
});
}, 200);
</script>
{% ENDIF %}


#10 Милый Мишка

Милый Мишка

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

  • Пользователи
  • PipPipPipPip
  • 247 сообщений
  • ГородНижний Новгород

Отправлено 10 Февраль 2019 - 15:02

Спасибо

#11 User1

User1

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

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

Отправлено 20 Сентябрь 2019 - 20:12

Уважаемая Вакцина!

Для шаблона "ТЕХНО": не хотел вас беспокоить, начал сам писать.
Там используется класс goodsDataMainModificationsBlockProperty, попробовал так:

{% IF GOODS_MOD_REST_VALUE=0 %}
<script>
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 > 0) {
   block.data('select', true);
  $('.goodsDataMainModificationsBlockProperty select option').removeAttr('selected');
  $('.goodsDataMainModificationsBlockProperty select option[value="' + id[0] + '"]').attr('selected', 'selected');
  $('.goodsDataMainModificationsBlockProperty select option[value="' + id[1] + '"]').attr('selected', 'selected');
  $('.goodsDataMainModificationsBlockProperty select').trigger('change');
  }
  });
}, 200);
</script>
{% ENDIF %}
  
та модификация что "в наличии" действительно выделяется и показывается в списке как выбранная, но такое ощущение что страница не обновляется - цена и надпись "Нет в наличии" остается, кнопка "В корзину" не разблокируется...
Приходится заново перевыбирать эту модификацию ручками.  События  'change' или 'click' не отрабатываются! Попробовал с 2х разных компов открыть тестовый товар...
Помогите.

А выше я правильно код написал?

#12 Vaccina

Vaccina

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

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

Отправлено 09 Октябрь 2019 - 07:00

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

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





Темы с аналогичным тегами модификации, в наличии

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

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