Um eine benutzerdefinierte main.js
Datei auf alle Seiten zu laden (auf die RequireJS-Weise), ist dies ein guter Weg:
1) Erstellen main.js
Erstellen Sie main.js
innerhalb des Themenordners
<theme_dir>/web/js/main.js
mit diesem Inhalt:
define([
"jquery"
],
function($) {
"use strict";
// Here your custom code...
console.log('Hola');
});
Kurz : Wir deklarieren zu Beginn Abhängigkeiten, z "jquery"
. Wir definieren als Funktionsparameter den Variablennamen für die Verwendung der Abhängigkeit innerhalb der Funktion, z "jquery" --> $
. Wir setzen all unseren benutzerdefinierten Code ein function($) { ... }
.
2) main.js
Mit einer requirejs-config.js
Datei deklarieren
Erstellen Sie eine requirejs-config.js
Datei im Themenordner:
<theme_dir>/requirejs-config.js
mit diesem Inhalt:
var config = {
// When load 'requirejs' always load the following files also
deps: [
"js/main"
]
};
"js/main"
ist der Weg zu unserem Brauch main.js
. Die Erweiterung ".js" ist nicht erforderlich.
Unsere requirejs-config.js
werden mit anderen requirejs-config.js
in Magento definierten zusammengeführt.
RequireJS unsere lädt main.js
Datei, auf jeder Seite, Abhängigkeiten aufzulösen und das Laden von Dateien in einem Asynchron - Weg.
Optional: Einschließlich Bibliothek eines Drittanbieters
Auf diese Weise können Bibliotheken von Drittanbietern eingebunden werden.
1) Fügen Sie die Bibliothek hinzu in web/js
:
<theme_dir>/web/js/vendor/jquery/slick.min.js
2) Öffne requirejs-config.js
und füge diesen Inhalt hinzu:
var config = {
deps: [
"js/main"
],
// Paths defines associations from library name (used to include the library,
// for example when using "define") and the library file path.
paths: {
'slick': 'js/vendor/jquery/slick.min',
},
// Shim: when you're loading your dependencies, requirejs loads them all
// concurrently. You need to set up a shim to tell requirejs that the library
// (e.g. a jQuery plugin) depends on another already being loaded (e.g. depends
// on jQuery).
// Exports: if the library is not AMD aware, you need to tell requirejs what
// to look for so it knows the script has loaded correctly. You can do this with an
// "exports" entry in your shim. The value must be a variable defined within
// the library.
shim: {
'slick': {
deps: ['jquery'],
exports: 'jQuery.fn.slick',
}
}
};
Es sieht komplizierter aus als das, was es eigentlich ist.
3) Fügen Sie die Abhängigkeit hinzu in main.js
:
define([
'jquery',
'slick'
],
function($) {
// ...
});
bootstrap.js
auf die gleiche Weise wieslick.js
im obigen Beispiel einfügen . Für den Shim-Wert können Sie versuchen, dies zu verwenden:'bootstrap': { deps: ["jquery"], exports: '$.fn.popover' }
Wie hier erklärt: stackoverflow.com/a/13556882/3763649var config = { deps: [ "js/animate", "js/incase", "js/confetti" ], paths: { "jquery.bootstrap":"js/bootstrap.min" }, shim:{ 'jquery.bootstrap':{ 'deps':['jquery'] } } }; require(["jquery",'jquery.bootstrap', 'jquery/ui', 'jquery/validate', 'mage/validation/validation', 'domReady!']);
Mein Minicart funktioniert nicht mehr damitSie können JS-Dateien mit XML wie folgt hinzufügen. Dies fügt js auf allen Seiten hinzu.
Mit benutzerdefiniertem Modul:
Erstellen Sie eine
default.xml
Datei in Ihrem Modul.app/code/vendor_name/module_name/view/frontend/layout/default.xml
quelle
Dupliziere die Datei:
Zu
Für mehr Informationen:
http://devdocs.magento.com/guides/v2.0/frontend-dev-guide/layouts/xml-manage.html
Viel Glück!
Übrigens: Lies die offiziellen Devdocs des Frontends von Magento, um die Grundlagen zu erhalten :)
quelle
Die Methode zum Hinzufügen von js mithilfe der
default_head_blocks.xml
Datei funktioniert nicht für JQuery-Plugins von Drittanbietern. Wenn Sie also benutzerdefinierte JQuery-Plugins hinzufügen und verwenden möchten, müssen Sierequirejs-config.js
file verwenden.So beantworten Sie Ihre Fragen einzeln:
1) & 2) Sie müssen kein Modul erstellen, um die
requirejs-config.js
Datei hinzuzufügen . Sie können es einfach an dieser Stelle hinzufügen:app/design/frontend/<Vendor>/<theme>/requirejs-config.js
Lesen Sie diese Antwort , um eine richtige
requirejs-config.js
Datei zu erstellen .3) Sie müssen die Abhängigkeiten Ihrer js-Datei auflisten, bevor Sie Ihre Skripte schreiben.
Der obige Code besagt, dass Sie jquery und jquery ui für Ihre Skripte benötigen.
4) Sie müssen das nicht verwenden, es
define([
sei denn, Sie erstellen ein Javascript-Plugin.5) Nein, Sie müssen sie nicht bearbeiten, aber Sie müssen ihre Abhängigkeit mithilfe der
requirejs-config.js
Datei angeben . Wenn Sieowl.carousel.min.js
in<vendor>/<theme>/web/js/owl.carousel.min.js
Ihrrequirejs-config.js
wird Datei wie folgt aussehen:Denken Sie im obigen Code bitte daran, dass es
.js
für die Datei keine gibt . Und jetzt, um es in Ihrem js zu verwendenWenn alles gut funktioniert, sollten Sie Ihre Fußzeilenlinks in einem Schieberegler haben.
6) & 7) Verwenden Sie einfach die von @Goldy vorgeschlagene Methode, um Ihre js hinzuzufügen. Es wird Ihre js-Datei zu allen Seiten hinzufügen.
Weitere Informationen finden Sie in diesem Beitrag
Hoffe das hilft.
quelle
So füge ich eine dotdotdot-Bibliothek in mein Magento2-Design ein.
1. Laden Sie die Js Library herunter und fügen Sie sie in Ihr Design ein.
2. Erstellen Sie die RequirementJS-Datei eines Themas wie folgt und teilen Sie den RequirementJS die neu hinzugefügte Bibliothek mit.
3. Verwenden Sie die hinzugefügte Bibliothek in der Haupt-JS-Datei Ihres Themas wie folgt:
4. und fügen Sie die js-Datei Ihres Themas wie folgt in den Kopf Ihrer Site ein:
Sie können jede externe JS-Bibliothek und benutzerdefinierte Datei auf jeder Seite in magento2 hinzufügen.
quelle