Aby załadować main.js
plik niestandardowy na wszystkie strony (w sposób RequireJS), jest to dobry sposób:
1) Utwórz main.js
Utwórz main.js
w folderze motywu
<theme_dir>/web/js/main.js
z tą zawartością:
define([
"jquery"
],
function($) {
"use strict";
// Here your custom code...
console.log('Hola');
});
W skrócie : deklarujemy zależności na początku, np "jquery"
. Jako parametr funkcji definiujemy nazwę zmiennej do wykorzystania zależności w funkcji, np "jquery" --> $
. Umieszczamy w nim cały nasz niestandardowy kod function($) { ... }
.
2) Zadeklaruj main.js
za pomocą requirejs-config.js
pliku
Utwórz requirejs-config.js
plik w folderze motywu:
<theme_dir>/requirejs-config.js
z tą zawartością:
var config = {
// When load 'requirejs' always load the following files also
deps: [
"js/main"
]
};
"js/main"
jest ścieżką do naszego zwyczaju main.js
. Rozszerzenie „.js” nie jest wymagane.
Nasze requirejs-config.js
zostaną połączone z innymi requirejs-config.js
zdefiniowanymi w Magento.
RequireJS załaduje nasz main.js
plik na każdej stronie, rozwiązując zależności i ładując pliki w sposób asynchroniczny.
Opcjonalnie: w tym biblioteka innej firmy
W ten sposób można włączyć biblioteki stron trzecich.
1) Dodaj bibliotekę w web/js
:
<theme_dir>/web/js/vendor/jquery/slick.min.js
2) Otwórz requirejs-config.js
i dodaj tę treść:
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',
}
}
};
Wygląda na bardziej skomplikowane niż w rzeczywistości.
3) Dodaj zależność w ramach main.js
:
define([
'jquery',
'slick'
],
function($) {
// ...
});
bootstrap.js
w taki sam sposób, jakslick.js
w powyższym przykładzie. Dla wartości shim można spróbować użyć tego:'bootstrap': { deps: ["jquery"], exports: '$.fn.popover' }
jak wyjaśniono tutaj: 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!']);
Mój minicart przestaje z tymMożesz dodać pliki JS za pomocą xml jak poniżej. Spowoduje to dodanie js na wszystkich stronach.
Z niestandardowym modułem:
Utwórz
default.xml
plik w swoim module.app/code/vendor_name/module_name/view/frontend/layout/default.xml
źródło
Duplikuj plik:
Do
Po więcej informacji:
http://devdocs.magento.com/guides/v2.0/frontend-dev-guide/layouts/xml-manage.html
Powodzenia!
BTW przeczytał frontend devdocs oficjalny z magento, aby uzyskać podstawowe :)
źródło
Metoda dodawania js przy użyciu
default_head_blocks.xml
pliku nie będzie działać w przypadku wtyczek JQuery innych firm. Jeśli więc chcesz dodać niestandardowe wtyczki JQuery i korzystać z nich, musisz użyćrequirejs-config.js
pliku.Aby odpowiadać na pytania jeden po drugim:
1) i 2) Nie musisz tworzyć modułu, aby dodać
requirejs-config.js
plik. Możesz po prostu dodać go w tej lokalizacji:app/design/frontend/<Vendor>/<theme>/requirejs-config.js
Zapoznaj się z tą odpowiedzią, aby utworzyć odpowiedni
requirejs-config.js
plik.3) Przed napisaniem skryptów musisz podać zależności pliku js.
Powyższy kod mówi, że będziesz potrzebować jquery i jquery ui dla swoich skryptów.
4) Nie musisz używać,
define([
chyba że tworzysz wtyczkę javascript.5) Nie, nie musisz ich edytować, ale musisz określić ich zależność za pomocą
requirejs-config.js
pliku. Jeśli maszowl.carousel.min.js
w<vendor>/<theme>/web/js/owl.carousel.min.js
Twójrequirejs-config.js
plik będzie wyglądał następująco:W powyższym kodzie pamiętaj, że nie ma
.js
pliku. A teraz, aby użyć go w swoim jsJeśli wszystko działa dobrze, linki stopki powinny znajdować się w suwaku.
6) i 7) Wystarczy użyć metody sugerowanej przez @Goldy, aby dodać swoją wersję js. Spowoduje to dodanie pliku js do wszystkich stron.
Do dalszego czytania możesz zajrzeć na ten post
Mam nadzieję że to pomoże.
źródło
W ten sposób dodaję bibliotekę dotdotdot do niestandardowego motywu magento2.
1. Pobierz i dodaj bibliotekę Js do swojego motywu, postępując zgodnie ze ścieżką:
2. Utwórz plik wymagań dla motywu w następujący sposób i powiadom go o nowo dodanej bibliotece.
3. Użyj dodanej biblioteki w głównym pliku js kompozycji w następujący sposób:
4. i dołącz plik js motywu do głowy witryny w następujący sposób:
Możesz dodać dowolną zewnętrzną bibliotekę JS i niestandardowy plik na każdej stronie w magento2.
źródło