Créer une structure de dossiers de module:
app / code / [Vendor] / [ModuleName]
app / code / [Vendor] / [ModuleName] / etc
app / code / [Vendor] / [ModuleName] / view / frontend / layout
Créer des fichiers de module:
app / code / [Vendor] / [ModuleName] / registration.php
app / code / [Vendor] / [ModuleName] / etc / module.xml
app / code / [Vendor] / [ModuleName] / view / frontend / requirejs-config.js
app / code / [Vendor] / [ModuleName] / view / frontend / layout / default.xml
app / code / [Vendor] / [ModuleName] / view / frontend / layout / default_head_blocks.xml
registration.php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'[Vendor]_[ModuleName]',
__DIR__
);
module.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../vendor/magento/framework/Module/etc/module.xsd">
<module name="[Vendor]_[ModuleName]" setup_version="0.0.1"/>
</config>
requirejs-config.js
var config = {
paths: {
"jquery.bootstrap": "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min"
},
shim: {
'jquery.bootstrap': {
'deps': ['jquery']
}
}
};
default.xml
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../vendor/magento/framework/Module/etc/module.xsd">
<referenceBlock name="head">
<block class="Magento\Theme\Block\Html\Head\Script" name="requirejs" before="-">
<arguments>
<!-- RequireJs library enabled -->
<argument name="file" xsi:type="string">requirejs/require.js</argument>
</arguments>
</block>
<!-- Special block with necessary config is added on the page -->
<block class="Magento\RequireJs\Block\Html\Head\Config" name="requirejs-config" after="requirejs"/>
</referenceBlock>
</page>
default_head_blocks.xml
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../vendor/magento/framework/Module/etc/module.xsd">
<head>
<css src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" src_type="url"/>
<css src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap-theme.min.css" src_type="url"/>
</head>
</page>
Activer le module (SSH vers root magento):
php -f bin/magento module:enable --clear-static-content [Vendor]_[ModuleName]
php -f bin/magento setup:upgrade
Déployer des ressources statiques (SSH vers la racine magento):
php bin/magento setup:static-content:deploy
RequireJS ne chargera aucun fichier source de module javascript jusqu'à ce que quelqu'un utilise ce module javascript comme dépendance. par Alan Storm
(exemple d'utilisation) dans la page CMS:
<script type="text/javascript">
requirejs(['jquery', 'jquery.bootstrap'], function (jQuery, jQueryBootstrap) {
jQuery('.carousel').carousel();
});
</script>
En relation: Ajout de CSS à une page CMS à l'aide de la mise à jour XML
xsi:noNamespaceSchemaLocation
valeurdefault.xml
. Il me semble que cela va à l'encontre de toute la modularité de Magento, pour définir un chemin comme ça. Mais je le vois partout sur le web, donc ça doit être la façon dont les choses fonctionnent.xsi:noNamespaceSchemaLocation
est dépassé, voire faux. Actuellement, il devrait l'être,urn:magento:framework:Module/etc/module.xsd
ce qui le rend flexible.default.xml
soit réellement nécessaire. Magento 2 charge déjà RequireJS partout sur toutes les pages, il n'est donc pas nécessaire d'ajouter explicitement RequireJS vous-même.Pour ajouter un fichier bootstrap JS, j'ai suivi les étapes suivantes sur Magento 2.2.4.
Étape 1: placez le fichier JS à l'emplacement suivant.
Étape 2: ajoutez les scripts suivants dans ce fichier
app/design/frontend/{Vendorname}/{Themename}/Magento_Theme/requirejs-config.js
.Étape 3: Ajoutez les scripts suivants dans les fichiers de modèle ou vos fichiers JS personnalisés (sans
script
balise).Étape 4: Accédez au dossier racine Magento et exécutez la commande ci-dessous.
la source