Probleme bei Varianten laden per Ajax

@shopware‍

Ich bin hier gerade über folgendes gestolpert. Vorraussetzung für beide Probleme ist, das Varianten wechseln per Ajax aktiv ist!
Vielleicht kann hier jemand von Shopware kurz was dazu sagen?!

zu Problem 1)
für die Deeplinks zu den Variaten holt sich SW die Ordernumber per Jquery aus dem Template

jquery.ajax-variant.js
orderNumber = $('.entry--sku .entry--content').text();

Hat man aber nun in seinem eigenen Template den Block/Inhalt für die Artikelnummer entfernt so wird der URL keine Ordernumber mehr mit übergeben, da eben leer. Wechselt man nun eine Variante wird immer nur ein leeres ?number= mit übergeben.

zu Problem 2)
die Inhalte wie z.B: sArticle.ordernumber oder sArticle.attrXX werden nur innerhalb von

.product--detail-upper

nachgeladen. Verschiebt man nun z.B. ein Freitextfeld in den Beschreibungs-Tab oder möchte eine neues variantenbezogenes Freitextfeld haben, wird dieses nicht mehr mit dem passenden Inhalt zur Variante nachgeladen.
Wie ist hier das empfohlene Vorgehen, damit auch diese wieder nachgeladen werden ohne für jede Änderung ein eigenes JS Plugin schreiben zu müssen?

Gruß

eben noch ein Problem entdeckt.

Da $sArticle.ordernumber nur innerhalb von .product–detail-upper nachgeladen wird, kommt es dazu das die „falche“ Ordernumber den Trackingscripts (Piwik/GA/eTracker usw.) mit übergeben wird. Sprich die des Hauptartikels und nicht der der Variante. Besonder bei addToCart Events kommt es hier zu Problemen bei der Auswertung da diese nicht zusammenpasst.

Gibt es hier eine andere Lösung als Varianten laden per Ajax zu deaktivieren?

Hallo @Creatixx‍,

danke für dein ausführlichen Post. Leider können wir Issues nicht über das Forum tracken, weshalb ich dich bitten würde ein Ticket im Issue-Tracker anzulegen:
https://issues.shopware.com/#/

Damit geht dein Problem bei uns nicht unter und durch das Upvoting wird die Issue schneller bearbeitet.

Uns ist bewusst, dass wir mit den AJAX-Varianten nicht alle Fälle wie ein Custom-Template abdecken können - wir können hier leider nur vom Standard-Theme ausgehen. Falls du ein abweichendes Verhalten benötigst kannst du per $.overridePlugin() die Plugin-Methode überschreiben und so anpassen wie du es brauchst. Siehe hierzu:
https://developers.shopware.com/designers-guide/modify-jquery-plugins/

Bzgl. Ordernumber: Das jQuery Plugin ist komplett konfigurierbar und kann auch per “data”-Attribute konfiguriert werden. Für die Ordernumber kannst du hier einen Selektor angeben, der nur innerhalb des Elements liegen muss, der die Ajax Variants initialisiert. Ob das Feld sichtbar ist oder nicht ist hier egal:
https://github.com/shopware/shopware/blob/5.1/themes/Frontend/Responsive/frontend/_public/src/js/jquery.ajax-variant.js#L35

Initialisiert wird das Plugin auf folgenden Element:
https://github.com/shopware/shopware/blob/5.1/themes/Frontend/Bare/frontend/detail/index.tpl#L34

Bzgl. Tracking-Scripts / weitere Daten müssen ausgetauscht werden: Hier könntest du das Event “plugin/swAjaxVariant/onRequestData” subscriben und dann entsprechend z.B. die Ordernumber für die Tracking-Scripts anpassen. An dieser Stelle kannst du dir auch weitere Informationen aus der Response fischen und entsprechend die DOM-Elemente aktualisiert. Hier die Stelle im Source Code. Hier siehst du auch, dass wir unsere jQuery Plugins neu initialisieren müssen:
https://github.com/shopware/shopware/blob/5.1/themes/Frontend/Responsive/frontend/_public/src/js/jquery.ajax-variant.js#L141

Viele Grüße,
Stephan Pohl 

1 Like

Hi [@Stephan Pohl](http://forum.shopware.com/profile/2/Stephan Pohl “Stephan Pohl”)‍

danke für deine Antwort! Das Ticket dazu erstelle ich in Kürze. Werde mir das in Ruhe mal ansehen.

Hättest du zufällig was die Anpassung an Trackingscript /Ordernumber betrifft einen Codesnipsel oder so?

 

Gruß

Hat ggf. jemand anders einen Vorschlag wie man das Problem mit der korrekten Ordernumber im Tracking lösen könnte?

@Creatixx‍ Hast du hier ein konkreten Tracking-Dienst, wo du Hilfestellung benötigst? Schicke mir gerne einfach mal den Code, ggf. findet sich hier eine Lösung. Grundsätzlich arbeiten die meisten Tracking-Dienste über einen Script-Inklude, wo verschiedene Variablen gesetzt werden, um z.B. eine Ordernumber zu tracken.

Ich denke man müsste das Script mit einer ID versehen, beim Ändern der Variante das Script-Tag selektiren, entfernen und selbst noch mal neu mit den geänderten Parametern zusammen bauen und wieder inkludieren.

Viele Grüße,
Stephan Pohl  Shopware

[@Stephan Pohl](http://forum.shopware.com/profile/2/Stephan Pohl “Stephan Pohl”)‍

eigentlich geht es hier um fast jedes Tracking das Produkte trackt. Selbst euer Plugin Google Integration oder Piwik Integration ist ja davon betroffen.

Bei deaktivierten “Varainten per Ajax laden” wird die korrekte Ordernumber an Analytics übergeben, wenn aber aktiv dann die des Hauptartikels oder sollte

man einen Browserrefresh gehabt haben, die Ordernumber der zu dem Zeitpunkt aktiven Variante. Das Verhalten gibt in der Auswertung ein recht unschönes Chaos.

Im Detail wird bei einer Variante als Beispiel die Ordernumber SW123 als “View” getrackt. Im Warenkorb und Checkout wird aber die korrekte Ordernumber der Variante

“SW123.12” getrackt. So könnte eine getrackter Varianten-Artikel 0 Views haben aber 10 Verkäufe. 

 

noch ein kurzer Nachtrag dazu. Auch beim Preis gibt es hier Probleme. Es wird der Preis des Hauptartikels übertragen und nicht der einer konfigurierten Variante.

Bin hier für jeden Tip dankbar!

Hi zusammen,

wie bekomme ich denn die Plugins von Shopware im eigenen JavaScript Plugin nachinitalisiert, wenn ich mir quasi einen eigenen Variantenwechsel gebastelt habe?

Siehe:
https://www.meinestruempfe.de/shopware5/engine/Shopware/Plugins/Community/Frontend/CbeVariantsDetail/Views/common/frontend/_resources/js/variants_details.js

Vielen Dank und viele Grüße,

Chris