Para carregar um main.js
arquivo personalizado em todas as páginas (no modo RequireJS), é uma boa maneira:
1) Criar main.js
Criar main.js
dentro da pasta do tema
<theme_dir>/web/js/main.js
com este conteúdo:
define([
"jquery"
],
function($) {
"use strict";
// Here your custom code...
console.log('Hola');
});
Em resumo : declaramos dependências no início, por exemplo "jquery"
. Definimos como parâmetro da função o nome da variável para usar a dependência dentro da função, por exemplo "jquery" --> $
. Colocamos todo o nosso código personalizado dentro function($) { ... }
.
2) Declarar main.js
com um requirejs-config.js
arquivo
Crie um requirejs-config.js
arquivo dentro da pasta do tema:
<theme_dir>/requirejs-config.js
com este conteúdo:
var config = {
// When load 'requirejs' always load the following files also
deps: [
"js/main"
]
};
"js/main"
é o caminho para o nosso costume main.js
. A extensão ".js" não é necessária.
Nosso requirejs-config.js
será fundido com outro requirejs-config.js
definido no Magento.
O RequireJS carregará nosso main.js
arquivo, em cada página, resolvendo dependências e carregando arquivos de maneira assíncrona.
Opcional: Incluindo biblioteca de terceiros
Essa é a maneira de incluir bibliotecas de terceiros.
1) Adicione a biblioteca em web/js
:
<theme_dir>/web/js/vendor/jquery/slick.min.js
2) Abra requirejs-config.js
e adicione este conteúdo:
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',
}
}
};
Parece mais complicado do que realmente é.
3) Adicione a dependência em main.js
:
define([
'jquery',
'slick'
],
function($) {
// ...
});
bootstrap.js
da mesma maneira que incluíslick.js
no exemplo acima. Para o valor do shim, você pode tentar usar isso'bootstrap': { deps: ["jquery"], exports: '$.fn.popover' }
:, conforme explicado aqui: 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!']);
Meu minicart para de trabalhar com issoDuplique o arquivo:
Para
Para maiores informações:
http://devdocs.magento.com/guides/v2.0/frontend-dev-guide/layouts/xml-manage.html
Boa sorte!
BTW leia o funcionário devdocs frontend do magento para obter o básico :)
fonte
Você pode adicionar arquivos JS usando xml como abaixo. Isso adicionará js em todas as páginas.
Com módulo personalizado:
Crie um
default.xml
arquivo no seu módulo.app/code/vendor_name/module_name/view/frontend/layout/default.xml
fonte
O método de adicionar js usando o
default_head_blocks.xml
arquivo não funcionará para plug-ins JQuery de terceiros. Portanto, se você deseja adicionar plugins JQuery personalizados e usá-los, precisará usar orequirejs-config.js
arquivoPara responder suas perguntas uma a uma:
1) e 2) Você não precisa criar um módulo para adicionar o
requirejs-config.js
arquivo. Você pode simplesmente adicioná-lo neste local:app/design/frontend/<Vendor>/<theme>/requirejs-config.js
Consulte esta resposta para criar um
requirejs-config.js
arquivo adequado .3) Você precisará listar as dependências do seu arquivo js antes de escrever seus scripts.
O código acima diz que você precisará de jquery e jquery ui para seus scripts.
4) Você não precisa usar o
define([
, a menos que esteja criando um plugin javascript.5) Não, você não precisa editá-los, mas precisará especificar a dependência deles usando o
requirejs-config.js
arquivo. Se você temowl.carousel.min.js
em<vendor>/<theme>/web/js/owl.carousel.min.js
, seurequirejs-config.js
arquivo será parecido com este:No código acima, lembre-se de que não existe
.js
o arquivo. E agora para usá-lo em seus jsSe tudo funcionar bem, você deverá colocar os links do rodapé em um controle deslizante.
6) e 7) Basta usar o método sugerido por @Goldy para adicionar seus js. Ele adicionará seu arquivo js a todas as páginas.
Para ler mais, você pode ver esta postagem
Espero que isto ajude.
fonte
É assim que adiciono a biblioteca dotdotdot no meu tema personalizado magento2.
1. Faça o download e adicione a Biblioteca Js ao seu tema, seguindo o caminho:
2. Crie o arquivo requirejs de um tema, conforme a seguir, e informe à requirejs a biblioteca recém-adicionada.
3. Use a biblioteca adicionada no arquivo js principal do seu tema da seguinte maneira:
4. e inclua o arquivo js do seu tema na cabeça do seu site da seguinte maneira:
Você pode adicionar qualquer biblioteca JS externa e arquivo personalizado em todas as páginas do magento2.
fonte