Gewählte Varianten werden nicht in Warenkorb übernommen

Hallo,

ich hab ein wenig herumgebastelt, um die dynamischen Änderungen der Preisanzeige in den Abschnitt der Artikeldetails zu integrieren (http://www.oxid-esales.com/forum/showthread.php?t=5157).
Dazu habe ich die oxid.js um folgende Funktion

		
showMdRealPrice: function(){
    document.getElementById('mdproduct_price').innerHTML = '';
    var selectedId = oxid.mdVariants.getSelectedMdRealVariant();
    if (selectedId && document.getElementById('mdvariant_' + selectedId)) {
        var realprice = document.getElementById('mdvariant_' + selectedId).getElementsByTagName('big');
	document.getElementById('mdproduct_price').innerHTML = realprice[0].firstChild.data;
           }			
}

erweitert, die ich anstelle von showMdRealVariant() in inc/variant_selector.tpl und in der Funktion resetMdVariantSelection() in der oxid.js aufrufe. Den Container

<div id="md_variant_box"></div>

hab ich aus der inc/variant_selector.tpl entfernt, da ich den Rest der Variantenansicht nicht brauche (wie es aber scheint brauche ich doch etwas davon).

Ok, soweit so gut.

Mein Problem: Wenn ich eine Variante auswähle bekomme ich diese nicht in den Warenkorb übernommen. Im Warenkorb landet immer nur die “Defaultvariante”. Das heißt also irgendetwas fehlt dem Shop noch zur Orientierung.

Ich war jetzt der Meinung es könnte vielleicht an den fehlenden hidden Fields der Varianten liegen. Also habe ich eine weitere Funktion in die oxid.js eingefügt, die mir auch immer den passenden Block an hidden Fields liefert.

		
replaceMdHiddenFields: function(){
   document.getElementById('md_hidden_variant').innerHTML = '';
   var selectedId = oxid.mdVariants.getSelectedMdRealVariant();
   if (selectedId && document.getElementById('mdvariant_' + selectedId)) {
      document.getElementById('md_hidden_variant').innerHTML = document.getElementById('mdhidden_' + selectedId).innerHTML;
           }				    
}

Aber leider interessiert das den Shop auch nicht.

Kann mir mal jemand auf die Sprünge helfen? Was braucht der Shop, um zu erkennen was in den Warenkorb gelegt werden soll?
Irgendwie sicher die Produkt-ID, aber welcher Part den ich jetzt entfernt hab gibt dem Shop die?

Link zum Testshop:http://www.ant-design.de/shop/Angebote/Angebote-Umstandsmode/Testjoppe.html

[QUOTE=SvenA;31701]Hallo,

ich hab ein wenig herumgebastelt, um die dynamischen Änderungen der Preisanzeige in den Abschnitt der Artikeldetails zu integrieren (http://www.oxid-esales.com/forum/showthread.php?t=5157).
Dazu habe ich die oxid.js um folgende Funktion

        
showMdRealPrice: function(){
    document.getElementById('mdproduct_price').innerHTML = '';
    var selectedId = oxid.mdVariants.getSelectedMdRealVariant();
    if (selectedId && document.getElementById('mdvariant_' + selectedId)) {
        var realprice = document.getElementById('mdvariant_' + selectedId).getElementsByTagName('big');
    document.getElementById('mdproduct_price').innerHTML = realprice[0].firstChild.data;
           }            
}

erweitert, die ich anstelle von showMdRealVariant() in inc/variant_selector.tpl und in der Funktion resetMdVariantSelection() in der oxid.js aufrufe. Den Container

<div id="md_variant_box"></div>

hab ich aus der inc/variant_selector.tpl entfernt, da ich den Rest der Variantenansicht nicht brauche (wie es aber scheint brauche ich doch etwas davon).

Ok, soweit so gut.

Mein Problem: Wenn ich eine Variante auswähle bekomme ich diese nicht in den Warenkorb übernommen. Im Warenkorb landet immer nur die “Defaultvariante”. Das heißt also irgendetwas fehlt dem Shop noch zur Orientierung.

Ich war jetzt der Meinung es könnte vielleicht an den fehlenden hidden Fields der Varianten liegen. Also habe ich eine weitere Funktion in die oxid.js eingefügt, die mir auch immer den passenden Block an hidden Fields liefert.

        
replaceMdHiddenFields: function(){
   document.getElementById('md_hidden_variant').innerHTML = '';
   var selectedId = oxid.mdVariants.getSelectedMdRealVariant();
   if (selectedId && document.getElementById('mdvariant_' + selectedId)) {
      document.getElementById('md_hidden_variant').innerHTML = document.getElementById('mdhidden_' + selectedId).innerHTML;
           }                    
}

Aber leider interessiert das den Shop auch nicht.

Kann mir mal jemand auf die Sprünge helfen? Was braucht der Shop, um zu erkennen was in den Warenkorb gelegt werden soll?
Irgendwie sicher die Produkt-ID, aber welcher Part den ich jetzt entfernt hab gibt dem Shop die?

Link zum Testshop:http://www.ant-design.de/shop/Angebote/Angebote-Umstandsmode/Testjoppe.html[/QUOTE]
Schau doch in der Variantenliste des Details nach, welche Parameter dort abgesendet werden.

Danke für die Antwort.

Hm, im Moment stehe ich irgendwie auf’m Schlauch.

Meine Vorstellung ist im Augenblick folgende: Für jede Variante gibt es ja ein div class=“variants”, dass eine Reihe von hidden Fields enthält und beim Ändern der Auswahl (andere Farbe, andere Größe des Artikels) wird im div id=“md_variant_box” dieses div samt dem Inhalt ausgetauscht.
Soweit kann ich das erst einmal nachvollziehen und beobachten. Und ich denke, dass die Werte der hidden Fields dem Shop sagen sollen welche Variante gerade aktuell gewählt wurde.
Da ich nun das div id=“md_variant_box” überhaupt nicht mehr erscheinen lasse hab ich, um die hidden Fields trotzdem zu haben, ein div id=“md_hidden_variant” angelegt und lasse da die entsprechenden hidden Fields immer dynamisch reinschreiben.
Das funktioniert auch prima. Es interessiert den Shop nur nicht wenn ich etwas in den Warenkorb lege.

Also ist meine Vorstellung irgendwo falsch. Ich weiß bloß nicht wo.

P.S. Ah, ok ich sehe gerade einen Unterschied zwischen der funktionierenden Ausgangsversion und meiner:
Aus irgendeinem Grund hab ich bei mir in den hidden Fields keinen Wert für force_sid.
Ich hab immer aid und anid im Auge behalten und das völlig übersehen. Irgendwie erscheint der Wert schon nicht in dem mit display:none ausgeblendeten Teil.

Ok, da muß ich mal meine Änderungen durchgehen und schauen ab welcher Stelle force_sid verschwindet. Sehr kurios.