Jump to content

Zmiana domyślnej kombinacji atrybutów automatycznie według stanu magazynowego


PiterKa

Recommended Posts

Chciałbym aby Presta zmieniała domyślną kombinację atrybutów dla produktu, według tego co aktualnie jest na stanie.

Przykładowo mamy produkt A w kolorze czarnym i białym.

 

Dzień 1: Stany magazynowe czarny -1, biały - 1 | Domyślny produkt czarny

Dzień 2: Stany magazynowe czarny-0, biały - 1 | Domyślnie wyświetlany produkt biały

 

Czy to jest możliwe ?

Link to comment
Share on other sites

niestety, ze standardowymi funkcjonalnoścami nie jest to możliwe i w takim przypadku konieczne by było napisanie albo modułu, albo zmodyfikować kontrolery które oznaczały by kombinacje jako "default"

 

Dziękuję za odpowiedź, gdyby się ktoś natknął na taki moduł to proszę o link.

Link to comment
Share on other sites

  • 1 year later...

podobno ten moduł to potrafi

https://www.prestashop.com/forums/topic/47363-module-attribute-wizard-pro-create-unlimited-attributes-combinations-choose-frm-7-input-types/

 

natknąłem się też na kawałek kodu js dzięki któremu można podobny efekt osiągnąć, niestety nie potrafię go jeszcze zmodyfikować na pola radio

<script type="text/javascript">
$(function(){

  var groupIds=new Array();
  $('select[id^="group_"]').each(function(){
	groupIds.push(this.id);
  });
  var allCombinations=new Array();
  $.each(combinations,function(key,combination){
	allCombinations.push(combination['idsAttributes']);
  });

  $('select[id^="group_"]').change(function(){checkCombination()});
  checkCombination();

  function checkCombination()
  {
	$('select[id^="group_"] option').removeAttr('disabled');
	$.each(groupIds,function(key,groupId){
	  var this_select=$('select[id='+groupId+']');
	  this_select.children('option').each(function(){
		if(this_select.val()!=this.value){
		  var combination=new Array();
		  combination[key]=this.value;
		  $.each(groupIds,function(key2,groupId2){
			if(key!=key2){
			  combination[key2]=$('select[id='+groupId2+']').val();
			}
		  });
		  var position=-1;
		  $.each(allCombinations,function(key1,theCombination){
			if(position==-1){
			  position=key1;
			  $.each(theCombination,function(key2,value){
				if(combination[key2]!=value)position=-1;
			  });
			}
		  });
		  if(position<0)
		  {
			this_select.children('option[value='+this.value+']').attr('disabled','disabled');
		  }
		}
	  });
	});
  }

});
</script>
Link to comment
Share on other sites

  • 1 month later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...