jQuery ready funktion Shopware 5.0.3

Hallo miteinander ich bin neu bei Shopware 5 und wollte mal so schauen ob ich jQuery zum raufen bekomme. Dafür habe ich mal ein eigenes Template angelegt über das backend und das Responsive dafür genommen. Das Script konnte ich über die Template.tpl einbinden mit: protected $javascript = array('src/js/myFile.js'); Leider bekomme ich das Script nicht geartet mit: jQuery(document).ready(function ($) { // }) Sowohl im header.tpl, noch im footer.tpl und auch nicht in der index.tpl will es starten. Wenn ich es in der Google Chrome Console starte funktioniert das Script. Wenn ich wenigstens Fehler angezeigt bekommen würde wüsste ich wenigstens wo des hackt. Was mache ich den da falsch?

https://developers.shopware.com/designe … t-observer https://developers.shopware.com/designe … ing-style/ Was sagt denn die Console, warum es nicht startet? Welchen Fehler gibt es? Wie sieht das Skript aus?

Die Konsole sagt nix. Vorher hatte ich ein simples Reihenfolge Problem gehabt das ich längst beseitigt habe. Nun gibt es keine Fehler mehr, dennoch startet es nicht es sei denn ich gebe es direkt in der Konsole ein. Dann greift das eingebundene Skript. Ehrlicherweise Ich bin etwas eingerostet was JS angeht. Darüber hinaus weiß ich nicht wirklich wo dass eingebunden werden soll: // Register new event $.publish('plugin/some-plugin/onInit', me); // Listen for an event $.subscribe('plugin/some-plugin/onInit', function() { console.log('onInit'); }) // Remove event listener $.unsubscribe('plugin/some-plugin/onInit'); Deswegen habe ich es so eingebunden: /\*\* @var array Defines the files which should be compiled by the javascript compressor \*/ protected $javascript = array( 'src/js/jquery.my-plugin.js' ); Das stand wenigstens dabei das es in die Tempe.tpl gehört als ich die Develiper’s und Designer’s Guide durchforstet hatte. … ist der Namenskonstrukt wichtig? … also jquery.Irgendwas.js ? Vermutung? Kann es sein das nicht alles direkt per jQuery angesteuert werden kann da einige eben über Ajax nachgeladen wird? Ich versuche eine Einkaufswelt HTML-Element per JS zu manipulieren. Also eine bestimmte ID CSS anzuhängen. [code] Beispiel Quellcode im HTML Element:

Hallo Welt
[/code] … und per jQuery zum Beispiel das daraus zu machen: Hallo Welt

Okay step by step. Du möchtest also per jquery ein Element mit der ID X nehmen und es einem Style zuweisen? Bzgl deines Problems: Versuchst du das ganze in einer Einkaufswelt? Denn das geht nicht „einfach so“ da die EK erst noch nachgeladen wird.

Das ist mir aufgefallen das alles per innerHTML nachgeladen wird und deswegen nicht greift. Ich habe mal einfach folgenden JS Code in die index.tpl vor den Schließenden Body-Tag eingefügt: [code][/code] … und für mich funktioniert nun dieses unschöne Workaround. Hat jemand eine elegantere alternative?

Wenn du den Coding Style folgst könntest du auf das entsprechende Event lauschen: https://developers.shopware.com/designe … t-observer Die entsprechende JS Datei wäre https://github.com/shopware/shopware/bl … emotion.js // Listen for an event $.subscribe('plugin/swEmotionLoader/onInit', function() { console.log('EK was loaded'); })

1 Like