Collapse, Variant und AJAX

Hallo Community, 

nach langem Suchen hab ich zwar einige ähnliche Beiträge gefunden aber bislang folgendes Problem noch nicht lösen können:

Auf der Produktseite (detail) habe ich in der Produktbeschreibung (content–description) eine Collapse Box für weitere Produktdetails eingebaut. Lade ich nun die Seite lässt sich der collapse–content bei click on collapse–title auch öffen.

Sobald ich allerdings einmal eine andere Produktvariante (in der variant–group) bestimme (z.B. Größe ändere oder Farbe grün auswähle) streikt die Collapse Box und das Akkordion geht nicht mehr auf (lediglich der content–title bleibt zusehen).

Konfiguriert man sein eignes Theme und deaktiveirt AJAX: also ThemeMananger - eigenes Theme wählen und rechts auf Theme konfigureren - Reiter: Konfiguration - „Varianten Wechsel über AJAX“ deaktivieren - dann lädt die Seite ja immer wieder neu wenn man die Produktvarianten ändert und dann öffnet sich auch die Collapse Box. ABER das Seitenladen dauert und ist vor allem bei einer mobilen Ansicht nicht so toll - würde also gerne AJAX aktiviert lassen und trotzdem nicht auf die Collapse Box verzichten. :) 

 

  • Hat einer von euch das schon mal gelöst?  Und die Collapse Box unter AJAX bei Variant-Wechsel zum laufen gebracht?

 

Meine JS Datei (collapse-panael.js) sieht bislang so aus:

(function($, window) {

           window.StateManager
           
               .addPlugin('.collapse--header, .collapse--content', 'swCollapsePanel', ['xs', 's', 'm', 'l', 'xl'])

})(jQuery, window);

 

Freu mich über jeden kleinen Tipp! Danke

Es kann sein dass du auf das Event vom jQuery Plugin listen musst, welches die per Ajax die Daten nachlädt und das jQuery Plugin swCollapsePanel neu anstupsen.

Sowas in der Art (Pseudocode)

$.subscribe('plugin/swAjaxVariant/onChange', function () {
    StateManager.addPlugin('.my-collapse-panel', 'swCollapsePanel');
});

 

Danke, hat leider bislang noch nicht funktioniert. 

Vielleicht geht es einem von euch ja auch so… wer dafür eine Löung findet, gerne teilen. Danke!

Sowas in der Art (Pseudocode)

$.subscribe(‚plugin/swAjaxVariant/onChange‘, function () {
StateManager.addPlugin(‚.my-collapse-panel‘, ‚swCollapsePanel‘);
});

Ich denke schon das das erneute registrieren des Plugins die Lösung ist.
Ich musste z.B. bei mir meine Logik einmal inital und einmal beim Event onRequestData aufrufen um meine Funktionalitäten ähnlich wie bei dir auch nach einem AJAX-Request noch verfügbar zu haben. Vielleicht ist das die Lösung auch bei dir.

;(function ($, document) {
  $(function () {
    // custom functions here

    function myInitFnc() {
      // call custom functions
    }

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

Alternativ dazu hab ich noch das gefunden: Shopware 5 upgrade guide

Man sollte eigene Plugins explizit zerstören und dann wieder neu initialisieren. Wobei letzteres nicht mit addPlugin sondern mit $(‚body‘).swagCustomPlugin(); geschieht.