Hallo zusammen,
wir wollen ein paar Contentseiten über das Plugin Shopware CMS von Dreischild mit eigenem CSS und JavaScript versehen.
Es handelt sich um ein einfaches FAQ Accordion.
Wenn wir den JS-Code über das Plugin einbinden wird er zu früh geladen bevor es die Klassen gibt. → Daher können wir die interne Pluginfunktion um JS einzubidnen nicht nutzen.
Daher ganz simpel das JS in eine Datei im Template und via Theme.php eingebunden:
protected $javascript = array(
'src/js/accordion.js',
);
Den Code selbst noch asynchron laden und es sollte laufen:
document.asyncReady(function() {
$('.dm-accordion-item .heading').on('click', function(e) {
e.preventDefault();
if($(this).closest('.dm-accordion-item').hasClass('active')) {
$('.dm-accordion-item').removeClass('active');
} else {
$('.dm-accordion-item').removeClass('active');
$(this).closest('.dm-accordion-item').addClass('active');
}
var $content = $(this).next();
$content.slideToggle(50);
$('.dm-accordion-item .content').not($content).slideUp('fast');
});
});
Soweit sollte alles korrekt sein.
Jetzt ist es aber so, dass der JS-Code beim Laden auf der Desktopansicht läuft jedoch bei einem kleineren Viewport nicht. Selbst wenn ich nur das Browserfenster minimal verschiebe funktioniert der Code nicht mehr.
Wenn ich die Seite auf Mobile lade läuft auch nichts.
Der Code selbst ist jedoch laut Browser drin, die CSS-Klassen sind auf allen Ansichten auch gleich.
Gibt es hier eine Idee/Lösung?
Gerne stelle ich euch den Link zum Staging via PN zur Verfügung.
Das gleiche Problem hatten wir bereits vor einem halben Jahr mit einem komplexeren JS-Code, damals haben wir auf die Funktion dann verzichtet. Daher kann ich den Code selbst fast ausschließen.
Bin für alle Ideen dankbar
Gruß
Dennis