Anpassung: Variante mit nur einer Auswahlmöglichkeit vorauswählen - Warenkorb-Button nicht klickbar

Thema wurde von tannenhof_imshausen, 7. Juni 2024 erstellt.

  1. tannenhof_imshausen

    tannenhof_imshausen Erfahrener Benutzer

    Registriert seit:
    26. Oktober 2022
    Beiträge:
    75
    Danke erhalten:
    20
    Danke vergeben:
    37
    #1 tannenhof_imshausen, 7. Juni 2024
    Zuletzt bearbeitet: 26. Juni 2024
    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
     

    Anhänge:

  2. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    13. Mai 2019
    Beiträge:
    481
    Danke erhalten:
    230
    Danke vergeben:
    155
    #2 Anonymous, 7. Juni 2024
    Zuletzt bearbeitet: 4. September 2024
    [gelöscht]
     
  3. tannenhof_imshausen

    tannenhof_imshausen Erfahrener Benutzer

    Registriert seit:
    26. Oktober 2022
    Beiträge:
    75
    Danke erhalten:
    20
    Danke vergeben:
    37
    #3 tannenhof_imshausen, 26. Juni 2024
    Zuletzt bearbeitet: 26. Juni 2024
    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.
     
  4. tannenhof_imshausen

    tannenhof_imshausen Erfahrener Benutzer

    Registriert seit:
    26. Oktober 2022
    Beiträge:
    75
    Danke erhalten:
    20
    Danke vergeben:
    37
    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);
    });