Jump to content

Фикс проблемы с комбинацией по умолчанию, которой нету в наличии.


Recommended Posts

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

 

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

 

По этому я придумал такое решение:

 

  <script type="text/javascript">
	 // <![CDATA[
		$(document).ready(function() {
  // Проверяем, если блок с надписью что товар отсуствует в этой комбинации не скрыт, делаем следующие...
  if ($('#availability_statut').css("display") == "block") {

   $('#attributes p:first select').find('option:selected').attr('selected', false); // находим комбинацию по умолчанию и снимаем с нее селект
	  $('#attributes p:first select option:eq(1)').attr('selected', 'selected').parent().focus(); // выбираем следующую комбинацию в качестве комбинации по умолчанию

   findCombination();

   $('#quantity_wanted_p, #add_to_cart').addClass('unhide'); ставим корзине и выбору кол-во класс чтобы открыть эти элементы.
  };
		});
			  //]]>
  </script>

 

Прописать в global.css или product.css:

 

.unhide {
  display:block!important;
}

 

В product.js примерно на 252 строчке найти:

 

 else
 {
  $('#add_to_cart:visible').fadeOut(600);
  $('p#availability_statut:hidden').show('slow');
 }

 

И заменить на:

 

 else
 {
  $('#add_to_cart:visible, p#quantity_wanted_p:visible').removeClass('unhide');
  $('#add_to_cart:visible').fadeOut(600);
  $('p#availability_statut:hidden').show('slow');
 }

 

И еще в том же файле, примерно на 236 строчке, поменять:

 

$('#availability_statut:hidden').show();

 

На:

 

$('#availability_statut:hidden').css('display', 'block');

 

Решение еще не оттестировано как следует и у него есть свои минусы и нюансы..

 

1) Вторая комбинация может быть тоже недоступна и тогда мало того что вылезет текст что она не доступна, так еще и добавить в корзину кнопка будет присутствовать.

 

2) Почему я прописал класс, а не сразу show() или display:block, потому что не получилось не чего, не открывается таким способом потому что в product.js как то железно кнопка с выбором кол-во товаров скрывается.

 

Буду рад если кто улучшить как то фикс или подскажет чего.

Edited by Kerm (see edit history)
  • Like 1
Link to comment
Share on other sites

  • 6 months later...
×
×
  • Create New...