Artikel Detailsseite - programmatisches triggern des AJAX Varianten Reloads

Ich habe ein Listing mit allen Varianten auf der Artikel Detailseite eingefügt und würde gerne bei einem Klick auf eine Variante im Listing das AJAX Reload Event anstoßen damit sich der obere Bereich mit den Variantenoptionen neu lädt. Variantenkonfiguration ist auf Picture gestellt und Asynchrones Varianten laden ist aktiviert.

Hab schon erfolgreich ein Event registriert und fange mit Event Delegation alle Klicks auf meine Links im Listing ab und setze die entsprechenden Radio Inputs (die sich ja hinter den Labels der Variantenoptionen befinden) auf checked. Funktioniert soweit auch.

Eine funktionierende aber nicht praktikable Lösung ist das abschicken des .configurator–form Formulars per submit() call was aber so nicht gewünscht ist.

Ich würde gerne programmatisch das Neuladen der Variante per AJAX anstoßen genau so als wie man mit der Maus auf eine Variantenoption klickt und sich die Galerie + die Variantenoptionen aktualisieren.

Shopware Plugin ist das swAjaxVariant in /themes/Frontend/Responsive/frontend/_public/src/js/ jquery.ajax-variant.js. Leider hab ich bei Dr. Goolge nichts gefunden wie man ein Plugin aufruft, nur wie man sich auf Events hängen (mach ich eh schon für onRequestData ) und wie man Plugins erweitern kann.

Vielen Dank schon mal für eure Hilfe.

Hier mein JS:

;(function ($, document) {
    $(function () {
        function registerVariantLoadFromVariantList() {
            if ($("#variant-list")) {
                $("#variant-list").delegate("a", "click", function (event) {
                    event.preventDefault();
                    var configValues = $(this).data("configvalues").split(";");
                    // first: uncheck and enable all variant options
                    $(".variant--option input").prop("disabled", false);
                    $(".variant--option input").prop("checked", false);

                    // enable selected variant options
                    for (var i = 1; i < configValues.length; i++) {
                        $(".variant--option input[id='" + configValues[i] + "']").prop("checked", true);
                    }
                    $("body").setLoading(true);
                    // statt der folgenden Zeile würde ich gerne den AJAX-Request zum Variantenoptinen neu laden anstoßen
                    //$(".configurator--form").submit();
                });
            }
        }

        registerVariantLoadFromVariantList();
        $.subscribe('plugin/swAjaxVariant/onRequestData', function() {
            registerVariantLoadFromVariantList();
        });
    });
})(jQuery, document);

 

Wirklich niemand einen Hinweis? Auch niemand von Shopware… Blush

Steht doch da, wie man das Plugin aufruft :slight_smile:

     * @example
     * HTML:
     * 
     *
     * JS:
     * $('*[data-ajax-variants-container="true"]').swAjaxVariant();

Und soweit ich sehe, wird der click in der init method getriggert -> shopware/jquery.ajax-variant.js at 5.5 · shopware/shopware · GitHub

@christiantrade‍ Danke für deinen Input aber damit hat es leider nicht funktioniert (vielleicht mach ich da auch was falsch), das hatte ich schon probiert.

Naja, werde wohl bei per JS ausgelösten „Klicks“ auf Elemente/Buttons bleiben um das Formular abzuschicken bzw. dadurch den AJAX-Call anzutriggern.