Überschreiben Sie die Magento 2 JS-Datei über requirejs-config.js, die nicht funktioniert

8

Ich versuche, den Dateianbieter / magento / module-catalog / view / base / web / js / price-box.js in meinem Design mit requirejs-config.js erfolglos zu überschreiben .

Speicherort meiner requirejs-config.js:

app / design / frontend / Mytheme / mytheme / requirejs-config.js

Inhalt meiner Datei requirejs-config.js:

var config = {
map: {
     '*': {
            priceBox:'js/price-box',
     }
}
};

Ich habe meine neue Datei price-box.js hier abgelegt:

app / design / frontend / Mytheme / mytheme / web / js / price-box.js

Ich habe auch versucht, es unter zu platzieren:

app / design / frontend / Mytheme / mytheme / Magento_Catalog / web / js / price-box.js

aber keiner von denen funktionierte.

Im Frontend wird folgende Datei geladen:

pub / static / frontend / Mytheme / mytheme / de_DE / Magento_Catalog / js / price-box.js

Welches ist die Standard-Vendor-Datei und nicht meine? Meine Datei ist hier:

pub / static / frontend / Mytheme / mytheme / de_DE / js / price-box.js

Wir arbeiten im Entwicklermodus und im Cache deaktiviert .

Ich habe ein paar Befehle ausprobiert, um zu sehen, ob das tatsächlich helfen würde:

php bin/magento setup:static-content:deploy
php bin/magento cache:clean
php bin/magento setup:upgrade
php bin/magento setup:di:compile

Irgendwelche Vorschläge?

Verwandte Fragen:

  1. Magento2: Wie kann ich das Core-JS-Modul price-box.js überschreiben?
  2. So erweitern Sie die js-Klasse / Methode der Checkout-Modellklasse in Magento 2
  3. Magento 2 liest meine requirejs-config.js nicht

Offizielle Dokumentation:


Update 1

Folgende Vorschläge eines StackExchange-Benutzers habe ich gerade gemacht:

  1. Verschieben Sie requirejs-config.js in das Web / den Ordner meines Themas.
  2. Entfernen Sie manuell alles unter / pub / static / außer der .htaccess-Datei
  3. Führen Sie diesen Befehl aus: php bin/magento dev:source-theme:deploy

Es hat keine Effekte gemacht, die geladene Datei bleibt:

pub / static / frontend / Mytheme / mytheme / de_DE / Magento_Catalog / js / price-box.js


Update 2 - Lösung

Wie von David Verholen vorgeschlagen, habe ich folgende Schritte ausgeführt:

  1. Entfernen Sie die mapDatei aus der Datei requirejs-config.js im Stammordner meines Themas.
  2. Platziere meine neuen Dateien price-box.jsin:

    app / design / frontend / Mytheme / mytheme / Magento_Catalog / web / js / price-box.js

  3. Entfernen Sie den gesamten Inhalt manuell, /pub/static/indem Sie Folgendes tun:

    rm -rf pub / static / *

J Plana
quelle
Entschuldigung, ich hatte einen Gehirnfehler und war falsch: Es soll sich tatsächlich direkt im Themenordner befinden. Ich schlage vor, die Datei direkt zu referenzieren. Also anstatt zu priceBox:versuchen : 'Magento_Catalog/js/price-box':.
Bassplayer7

Antworten:

6

Das Platzieren der Datei unter app/design/frontend/Mytheme/mytheme/Magento_Catalog/web/js/price-box.jssollte ausreichen (ohne dass eine Konfiguration erforderlich ist), um die Datei in Ihrem Design zu überladen.

Versuchen Sie, wie bereits erwähnt, den Inhalt von pub / static / folder (mit Ausnahme von .htaccess) zu löschen. Auf Unix-Systemen können Sie dies mit dem Befehl rm -rf pub/static/*aus dem Stammverzeichnis tun, da * keine Dateien enthält, die mit a beginnen.

Wenn dies nicht funktioniert, liegt vermutlich ein Problem vor, da sich die Originaldatei in dem baseBereich befindet, während sich Ihr Thema in dem frontendBereich befindet. Logischerweise (wenn dies nicht funktioniert) kann dies ein Fehler im Überladungsmechanismus sein, da die Basis von allen Bereichen geerbt werden sollte.

David Verholen
quelle
David Eines fällt in Ihrer Antwort auf: Wenn js in das Basisverzeichnis fällt, kann dies zu Problemen führen. Gibt es eine Möglichkeit, dies zu beheben? In meinem Fall befindet sich js im Basisverzeichnis, sodass ich es mit meinem benutzerdefinierten Modul nicht überschreiben kann.
Dhaval Solanki
1

Inhalt von requirejs-config.jssollte sein:

 var config = {
     map: {
         '*': {
             'Magento_Catalog/js/price-box':'Vendor_Module/js/price-box'
         }
     }
 };

Getestet in Magento 2.1.4.

Konstantin Gerasimov
quelle
Funktioniert nicht. Helfen Sie mir dabei -> magento.stackexchange.com/questions/305247/…
Kowsigan Atsayam