Jump to content

ungültige Variantenkombinationen ausblenden


Recommended Posts

Hallo Leute,

wir haben in unserem Shop Artikel mit mehren Varianten. Dummerweise gibt es aber Variantenmerkmale der ersten Variante, die in der zweiten nicht vorhanden sind.

Es wird dann "Dieses Produkt existiert nicht in dieser Variante. Sie können jedoch eine andere Variante wählen." ausgegeben.

Ich würde diese Merkmal dann aber gerne für diese Variante aus der Auswahl ausschließen.

 

Beispiel:

Der Artilkel Box hat

1. Variante:Größe, Merkmale: gross, klein

2. Variante:Farbe, Merkmale: blau, rot, weiss, schwarz

 

Aber es gibt sie nur in gross : blau und rot und klein:weiss und schwarz.

 

Angezeigt werden aber leider alle Auswahlmöglichkeiten.

 

Ich vermute mal es steht in der product.tpl ca ab Zeile 305

 

Ich hoffe irgendwer hat eine Idee

Link to comment
Share on other sites

Ich verstehe nicht ganz das Problem. Du hast Produkte die in einer bestimmten Kombination nicht vorhanden sind. Hast du die Kombis dann auch angelegt ? Den Fehler den du beschreibst kann ich nicht nachvollziehen. Kombis die nicht existieren musst du löschen.

 

By the way, welche Prestashop-Version, damit man das Problem auch nachvollziehen kann, wenn es nicht ein Problem ist einer fehlerhaften Anlage der Kombis.

Link to comment
Share on other sites

Ok, ist auch blöd zu beschreiben, Ich versuchs nochmal mit 'nem Beispiel:

Für Artikel Box gibt es die Variante Größe mit den möglichen Merkmalen "gross" und "klein". Diese erscheint in Produktinfo als erstes Auswahlfeld.

Es gibt für diesen Artikel Box aber noch die 2. Variante Farbe - diese Auswahl erscheint in der Produktinfo unter der ersten als zweites Auswahlfeld.

Als Kombination angelegt sind grosse Boxen in rot und blau, kleine Boxen in schwarz und weiss. (nur 4 Kombis)

in beiden Auswahlfeldern werden aber immer alle Merkmale angezeigt.

Wenn man jetzt oben "groß" wählt, kann man im zweiten Auswahlfenster auch die nicht vorhandenen Farben schwarz und weiß wählen und bekommt als Ergebnis die unschöne Meldung: Dieses Produkt existiert nicht in dieser Variante. Sie können jedoch eine andere Variante wählen." ausgegeben.

 

Siehe Screenshot aus dem Shop (www.beamer-leinwand-profi.de)

 

auswahl.jpg

Ist es jetzt verständlich? Ich hoffe irgendwer hat eine Idee wie man die Auswahl in dem zweiten Auswahlfel (in unserem Shop sogar nocht dritten) so hinkriegt, das nicht vorhandene Merkmale, im Bezug auf die Auswahl im darüberliengenden Auswahlfeld, nicht mehr angezeigt werden.

Link to comment
Share on other sites

ich hatte bei mir für felder bzw kombis die es nicht gibt diese zeichen eingesetzt ------------- das sieht nicht nur schön aus sondern machts auch übersichtlich für den kunden .... also legst du hierfür einfach eine kombi an macht sich mit csv listen generell besser finde ich

Link to comment
Share on other sites

  • 2 weeks later...

Hier hat mal einer sowas gemacht allerdings 2009:

http://www.prestasho...937#entry769937

 

Nur wie das ganze mit 1.4.7 gehen soll bin ich grad überfragt.

 

Aber ich hatte auch die Idee, dass man die nicht gültigen ausblendet.

 

das ganze sollte dann über die product.js laufen in den themes.

 

Nur steig ich noch nciht ganz durch ;)

 

Aber soweit bin ich schon das der chocie array den gewählten select übergibt.

 

und die erlaubten kombinationen habe ich auch schon rausgefunden.

 

jetzt muss man das ganze halt nur noch iwie in der mehrdimonsinalität verheiraten,

 

 

 

Wenn jemand schon eine lösung hat bitte posten.

 

Danke

 

EDIT:

 

erster ansatz, aber noch extrem buggy

 

//alert(dump(erlaubtechoices));
$.each(erlaubtechoices, function(key, value)
 {
 if(choice[0]!=value[0])
 {
  $.each(value, function(key, value)
		{
		  $('#selectID_'+value).css('background-color','red');
		})
 }
 else{
	$.each(value, function(key, value)
		{
		  $('#selectID_'+value).css('background-color','#00ff00');
		})
  }
//alert(value);
 })

Link to comment
Share on other sites

So mal ein update zu dem Thema ;).

 

Habe es mal soweit implementiert, aber ob es jetzt immer klappt kann ich nicht sagen, aber Tester sind erbeten ;)

 

in der product.tpl ändern:

<p>
<label for="group_{$id_attribute_group|intval}">{$group.name|escape:'htmlall':'UTF-8'} :</label>
{assign var="groupName" value="group_$id_attribute_group"}
<select name="{$groupName}" id="group_{$id_attribute_group|intval}" onchange="javascript:findCombination();{if $colors|@count > 0}$('#wrapResetImages').show('slow');{/if};">
 {foreach from=$group.attributes key=id_attribute item=group_attribute}
  <option id="selectID_{$id_attribute|intval}" value="{$id_attribute|intval}"{if (isset($smarty.get.$groupName) && $smarty.get.$groupName|intval == $id_attribute) || $group.default == $id_attribute} selected="selected"{/if} title="{$group_attribute|escape:'htmlall':'UTF-8'}">{$group_attribute|escape:'htmlall':'UTF-8'}</option>
 {/foreach}
</select>
  </p>

<option id="selectID_{$id_attribute|intval}" ..

 

dann noch in der product.js:

 

function findCombination(firstTime)
{
$('#minimal_quantity_wanted_p').fadeOut();
$('#quantity_wanted').val(1);
//create a temporary 'choice' array containing the choices of the customer
var choice = new Array();
$('div#attributes select').each(function(){
 choice.push($(this).val());

});
//added by [b]BluTiGeS [/b]
var erlaubtechoices = new Array();

 

//added by BluTiGeS

var erlaubtechoices = new Array();

 

hinzufügen.

 

+

 

Zeile ~98

 

 

$.each(combinations[combination]['idsAttributes'], function(key, value)
 {

  if (!in_array(value, choice))
  {
combinationMatchForm = false;

  }

 //added by BluTiGeS alles einheitlich färben Begin
  $('#selectID_'+value).css('background-color','white');
  //added by BluTiGeS  END
 })
 //indicate that the attribute selected are compatible

 //added byBluTiGeS
	erlaubtechoices.push(combinations[combination]['idsAttributes']);

 

und dann noch for der letzen } Klammer der Funktion:

 

//added by BluTiGeS BEGIn
$.each(erlaubtechoices, function(key, value)
  {
if(in_array(choice[0],value))
{
 //alert(dump(value));
 for(var i=1; i<value.length;i++)
  {
  //alert(value[i]);
  $('#selectID_'+value[i]).css('background-color','green');

  }
 }
  })
//added by BluTiGeS END

einfügen et voila, sollte die gute Kombination Grün sein.

 

Bekannter Bug:

 

- Das erst eine Auswahl getroffen werden muss bevor die farbänderung angewandt wird. (kann gefixt werden wenn man die letzten Zeilen Code zu dem Code zeile 98 packt)

- Bisher nur Choice 0 als Maßgabe, weitere müssen noch folgen

 

 

 

Ich habe auch die beiden Files mal angehängt.

 

product.tpl -> Tempate Folder und product.js ->Template JS Folder

product.zip

Link to comment
Share on other sites

//added by BluTiGeS BEGIn

 $.each(erlaubtechoices, function(key, value)
   { 
 if(in_array(choice[value.length-2],value))
 {
    $('#selectID_'+value[value.length-1]).css('background-color','green');
 }
   })
 //added by BluTiGeS END

 

Das macht es möglich, das letzte Dropdown einzuschränken.

 

Problem ist, dass die Auswahl nicht schritt fpür Schritt eingeblendet wird, sondern man alle Felder auf einmal übergibt und so wird es schwer das ganze gezielt auszuwählen. Aber vll hilt das ja schon mal jemand ,)

Link to comment
Share on other sites

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...