Zeitweise sind nicht alle Varianten eines Artikels verfügbar, deshalb habe ich eine Theme-Anpassung für Malibu (siehe Anhang) vorgenommen, damit, wenn es nur eine bestellbare Variante gibt, diese bei der Dropdown-Auswahl gleich vorausgewählt ist. (Voraussetzung ist die aktivierte Einstellung „Lagerbestand vor dem Warenkorb prüfen“.) Das Problem ist nun, dass der „In den Warenkorb“-Button ausgegraut ist, obwohl eine gültige Kombination vorausgewählt ist. Erst wenn z.B. die Menge erhöht wurde oder ein Klick auf eine Zusatzoption erfolgt ist, funktioniert der Button. Beispiel: https://shop.tannenhof-imshausen.de/bio-knoblauch/garpek-knoblauch-kg.html Meine Vermutung ist, dass das Javascript, was die Verfügbarkeit checkt, erst nach einer Benutzeraktion aktiv wird. Hat jemand eine Idee, was man da machen könnte? Herzlichen Dank, Johannes Bearbeitung: Anhang aktualisiert, so dass das select Element die Klasse one-selectable bekommt, wenn es nur eine Auswählmöglichkeit gibt
Dank @ff-webdesigner bin ich der Lösung auf die Spur gekommen: Ich habe meine Theme-Anpassung oben aktualisiert, das select-Element bekommt jetzt die Klasse one-selectable, wenn es nur eine Auswählmöglichkeit gibt. Bei der Dropdown-Auswahl reicht dann folgende Zeile: Code: $(".modifier-group.modifier-type__dropdown select.form-control.one-selectable").trigger('change', []); Habe also eine Javascript-Datei mit folgendem Inhalt an diese Stelle laut Tutorial gelegt: /themes/meintheme/javascripts/system/ProductInfo/ZZ-modifier-group--one-selected.js Code: $( document ).ready(function() { setTimeout(function(){ // Ergänzung zu /themes/tannenhof-kopie/html/custom/modifier_group_type_dropdown.html // Dropdown: nur ein auswählbares Element - selected aktivieren $(".modifier-group.modifier-type__dropdown select.form-control.one-selectable").trigger('change', []); // diese Zeilen (von ff-webdesigner verwendet) sind nicht nötig: // $(".modifier-group.modifier-type__image:nth-of-type(1) .modifiers-list li:first-of-type a").trigger("click"); // $(".modifier-group.modifier-type__image:nth-of-type(1) .modifiers-list li:first-of-type").trigger("click"); }, 1000); }); Die Datei wird auch eingebunden ( steht am Ende der Datei /public/theme/javascripts/system/Build/productinfo.js ), aber der Code wird nicht ausgeführt. Was mache ich falsch? In der Entwickler-Konsole im Browser funktioniert dieser Code wunderbar.
Die Lösung lautet: Der Timeout von 1 Sekunde ist zu kurz, 3 Sekunden sind ausreichend. Jetzt funktioniert es. Der ganze Code: Code: $( document ).ready(function() { setTimeout(function(){ // Ergänzung zu /themes/tannenhof-kopie/html/custom/modifier_group_type_dropdown.html // Dropdown: nur ein auswählbares Element - selected aktivieren $(".modifier-group.modifier-type__dropdown select.form-control.one-selectable").trigger('change', []); }, 3000); });