Modulordnerstruktur erstellen:
app / code / [Vendor] / [ModuleName]
app / code / [Vendor] / [ModuleName] / etc
app / code / [Vendor] / [ModuleName] / view / frontend / layout
Moduldateien erstellen:
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>
Modul aktivieren (SSH zu Magento Root):
php -f bin/magento module:enable --clear-static-content [Vendor]_[ModuleName]
php -f bin/magento setup:upgrade
Bereitstellen statischer Ressourcen (SSH für Magento-Root):
php bin/magento setup:static-content:deploy
RequireJS lädt keine Javascript-Modul-Quelldatei, bis jemand dieses Javascript-Modul als Abhängigkeit verwendet. per Alan Storm
(Beispielverwendung) in der CMS-Seite:
<script type="text/javascript">
requirejs(['jquery', 'jquery.bootstrap'], function (jQuery, jQueryBootstrap) {
jQuery('.carousel').carousel();
});
</script>
Verwandte Themen : Hinzufügen von CSS zu einer CMS-Seite mit Layout Update XML
xsi:noNamespaceSchemaLocation
Wert in zu sehendefault.xml
. Es scheint mir, dass dies gegen die Modularität in Magento verstößt, um einen solchen Pfad zu definieren. Aber ich sehe es überall im Web, also muss es so sein, wie es funktioniert.xsi:noNamespaceSchemaLocation
ist das veraltet oder sogar falsch. Derzeit sollte es seinurn:magento:framework:Module/etc/module.xsd
, was es flexibel macht.default.xml
tatsächlich erforderlich ist. Magento 2 lädt RequireJS bereits überall auf allen Seiten, sodass Sie RequireJS nicht explizit selbst hinzufügen müssen.Um eine Bootstrap-JS-Datei hinzuzufügen, habe ich die folgenden Schritte in Magento 2.2.4 ausgeführt.
Schritt 1: Platzieren Sie die JS-Datei am folgenden Speicherort.
Schritt 2: Fügen Sie die folgenden Skripte in diese Datei ein
app/design/frontend/{Vendorname}/{Themename}/Magento_Theme/requirejs-config.js
.Schritt 3: Fügen Sie die folgenden Skripte in die Vorlagendateien oder Ihre benutzerdefinierten JS - Dateien ein (ohne
script
Tag) ein.Schritt 4: Gehen Sie zum Magento-Stammordner und führen Sie den folgenden Befehl aus.
quelle