Pour charger un main.js
fichier personnalisé sur toutes les pages (de la manière RequireJS), procédez comme suit:
1) créer main.js
Créer main.js
dans le dossier du thème
<theme_dir>/web/js/main.js
avec ce contenu:
define([
"jquery"
],
function($) {
"use strict";
// Here your custom code...
console.log('Hola');
});
En bref : nous déclarons les dépendances au début, par exemple "jquery"
. Nous définissons comme paramètre de fonction le nom de la variable pour utiliser la dépendance dans la fonction, par exemple "jquery" --> $
. Nous mettons tout notre code personnalisé à l'intérieur function($) { ... }
.
2) Déclarer main.js
avec un requirejs-config.js
fichier
Créez un requirejs-config.js
fichier dans le dossier du thème:
<theme_dir>/requirejs-config.js
avec ce contenu:
var config = {
// When load 'requirejs' always load the following files also
deps: [
"js/main"
]
};
"js/main"
est le chemin de notre coutume main.js
. L'extension ".js" n'est pas requise.
Notre requirejs-config.js
sera fusionné avec d'autres requirejs-config.js
définis dans Magento.
RequireJS charge notre main.js
fichier, sur chaque page, en résolvant les dépendances et en chargeant les fichiers de manière asynchrone.
Facultatif: bibliothèque tierce incluse
C'est le moyen d'inclure des bibliothèques tierces.
1) Ajouter la bibliothèque en web/js
:
<theme_dir>/web/js/vendor/jquery/slick.min.js
2) Ouvrez requirejs-config.js
et ajoutez ce contenu:
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',
}
}
};
Cela semble plus compliqué que ce que c'est réellement.
3) Ajoutez la dépendance dans main.js
:
define([
'jquery',
'slick'
],
function($) {
// ...
});
bootstrap.js
de la même manière queslick.js
dans l'exemple ci-dessus. Pour la valeur shim, vous pouvez essayer ceci :,'bootstrap': { deps: ["jquery"], exports: '$.fn.popover' }
comme expliqué ici: 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!']);
Mon minicart cesse de fonctionner avec ceciDupliquer le fichier:
À
Pour plus d'informations:
http://devdocs.magento.com/guides/v2.0/frontend-dev-guide/layouts/xml-manage.html
Bonne chance!
BTW a lu le devdocs officiel de Magento pour obtenir la base :)
la source
Vous pouvez ajouter des fichiers JS en utilisant XML comme ci-dessous. Cela va ajouter js dans toutes les pages.
Avec module personnalisé:
Créer un
default.xml
fichier dans votre module.app/code/vendor_name/module_name/view/frontend/layout/default.xml
la source
La méthode d'ajout de js à l'aide du
default_head_blocks.xml
fichier ne fonctionnera pas pour les plug-ins JQuery tiers. Donc, si vous voulez ajouter des plugins JQuery personnalisés et les utiliser, vous devez utiliser unrequirejs-config.js
fichier.Pour répondre à vos questions une à une:
1) et 2) Il n'est pas nécessaire de créer un module pour ajouter le
requirejs-config.js
fichier. Vous pouvez simplement l'ajouter à cet endroit:app/design/frontend/<Vendor>/<theme>/requirejs-config.js
Reportez-vous à cette réponse pour créer un
requirejs-config.js
fichier approprié .3) Vous aurez besoin de lister les dépendances de votre fichier js avant d'écrire vos scripts.
Le code ci-dessus indique que vous aurez besoin de jquery et jquery ui pour vos scripts.
4) Vous n’avez pas besoin d’utiliser le
define([
sauf si vous créez un plugin javascript.5) Non, vous n'avez pas besoin de les éditer, mais vous devrez spécifier leur dépendance à l'aide du
requirejs-config.js
fichier. Si vous avezowl.carousel.min.js
dedans<vendor>/<theme>/web/js/owl.carousel.min.js
, votrerequirejs-config.js
fichier ressemblera à ceci:Dans le code ci-dessus, rappelez-vous qu'il n'y a pas
.js
de fichier. Et maintenant, à utiliser dans votre jsSi tout fonctionne bien, vous devriez avoir vos liens de pied de page dans un curseur.
6) et 7) Utilisez simplement la méthode suggérée par @Goldy pour ajouter votre js. Il va ajouter votre fichier js à toutes les pages.
Pour en savoir plus, vous pouvez regarder ce post
J'espère que cela t'aides.
la source
C'est ainsi que j'ajoute la bibliothèque dotdotdot dans mon thème personnalisé magento2.
1. Téléchargez et ajoutez Js Library à votre thème en suivant le chemin:
2. Créez le fichier requirejs d'un thème comme suit et informez-le de la bibliothèque nouvellement ajoutée.
3. Utilisez la bibliothèque ajoutée dans le fichier js principal de votre thème comme suit:
4. et incluez le fichier js de votre thème dans la tête de votre site comme suit:
Vous pouvez ajouter n'importe quelle bibliothèque JS externe et fichier personnalisé sur chaque page de magento2.
la source