Javascript-Dateien nicht überschreibbar?

Hat jemand eine Lösung?

Vielen Dank dimikhh! Die Lösung mit deiner customTrigger.js hat einwandfrei funktioniert. @Swedenmade: Du nimmst einfach die customTrigger.js von dimikhh und kommentierst die if-Abfrage aus. /\*if (StateManager.isCurrentState('m') ||StateManager.isCurrentState('l') || StateManager.isCurrentState('xl') ){ return; }\*/ Nun funktioniert die Lupe schon, allerdings musst du das Styling für den Trigger (die Lupe) und das Suchformular anpassen.

hmm. also bei mir überschreibt es das Plugin nicht auch wenn ich es genau wie von dimikhh beschrieben mache. in Theme.php aufrufe usw…

Ich erlebe das selbe wie das was maxyoo weiter oben beschreibt.

Was einzig und allein eine Reaktion hervorbringt ist das direkte Abändern innerhalb der original jquery.search.js von z. B. „xs“ auf „s“ an allen drei Stellen

ich versuche das Ganze bei Shopware 5.2 - kann es evtl. daran liegen, dass die customTrigger.js nicht greiftt?

 

Hallo,

die Aussage, dass der Override erst auf DOMready passieren soll trifft nur bedingt zu. Hier bin ich davon ausgegangen, dass man mit StateManager.removePlugin() das Plugin entfernt und mit StateManager.addPlugin() neu registriert. Damit die Änderungen von einem Override vor der Initialisierung greifen, müssen diese direkt passieren. Für das Bearbeiten von jQuery Plugins gibt es zwei Möglichkeiten:

$.plugin() - Überschreibt das komplette Plugin. Sämtliche Logik muss selbst implementiert werden.

$.overridePlugin() - Es können einzelne Methoden und Properties des Plugins überschrieben werden. Mit this.superclass kann auf das ursprüngliche Plugin zugegriffen werden.

Infos dazu auch unter:
Modify jQuery plugins

 

Sonnige Grüße,
Phil

1 „Gefällt mir“

Hallo,

ich bin letzte Woche auf ein Problem mit $.overridePlugin() gestoßen: 

Vor einer Weile habe ich im Theme eine kleine Anpassung am ‘swImageSlider’ gemacht per overridePlugin. Letzte Woche habe ich dann ein neues Plugin entwickelt, das Ebenfalls eine Funktion des swImageSlider überschreiben sollte. Das overridePlugin vom Plugin wurde ignoriert, so lange in meinem Theme das overridePlugin aktiv war.
Das Theme ist auf ‘injectBeforePlugins = false’ eingestellt, Shopware 5.1.5.

Gibt es die Möglichkeit, dass ich das gleiche Jquery Plugin von verschiedenen Stellen aus überschreiben kann?

Viele Grüße aus Ulm
André

Hallo,

das **.overridePlugin()** funktioniert immer nur auf **einer Ebene**. Es greift immer der letzte Override. Die Funktion ist dafür gedacht, um in einem Custom-Theme kleinere Anpassungen an den Standard-jQuery-Plugins durchführen zu können. Ein Shopware Plugin sollte die .overridePlugin() Methode nicht verwenden, sondern selbst neue Logik implementieren. Wir spielen mit dem Gedanken eine Art $.copyPlugin() Methode zu integrieren, um ein jQuery Plugin auf der Basis eines Bestehenden erstellen zu können. Hier könnt Ihr mir auch gerne Feedback geben, ob Ihr eine solche Funktion für hilfreich empfindet. Ich habe dazu mal ein Ticket angelegt: Shopware Issuetracker

Sonnige Grüße,
Phil

1 „Gefällt mir“