Próbuję dołączyć bootstrap js do mojego motywu magento2. Ale problem polega na tym, że dołączam bootstrap js do mojego motywu. Ta konsola czasu podaje błąd, że bootstrap wymaga jQuery.
Jak mogę to zrobić? Czy ktoś może mi pomóc?
Próbuję dołączyć bootstrap js do mojego motywu magento2. Ale problem polega na tym, że dołączam bootstrap js do mojego motywu. Ta konsola czasu podaje błąd, że bootstrap wymaga jQuery.
Jak mogę to zrobić? Czy ktoś może mi pomóc?
Odpowiedzi:
Utwórz strukturę folderów modułów:
app / code / [Vendor] / [ModuleName]
app / code / [Vendor] / [ModuleName] / etc
app / code / [Vendor] / [ModuleName] / view / frontend / layout
Utwórz pliki modułów:
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>
wymaganyjs-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>
Włącz moduł (SSH do magento root):
php -f bin/magento module:enable --clear-static-content [Vendor]_[ModuleName]
php -f bin/magento setup:upgrade
Wdróż zasoby statyczne (SSH do magento root):
php bin/magento setup:static-content:deploy
RequireJS nie załaduje żadnego pliku źródłowego modułu javascript, dopóki ktoś nie użyje tego modułu javascript jako zależności. na Alana Storma
(przykładowe użycie) na stronie CMS:
<script type="text/javascript">
requirejs(['jquery', 'jquery.bootstrap'], function (jQuery, jQueryBootstrap) {
jQuery('.carousel').carousel();
});
</script>
Powiązane: Dodanie CSS do strony CMS za pomocą Layout Update XML
xsi:noNamespaceSchemaLocation
jest przestarzały, a nawet zły. Obecnie powinien to być, urn:magento:framework:Module/etc/module.xsd
co czyni go elastycznym.
default.xml
było naprawdę potrzebne. Magento 2 już ładuje RequireJS wszędzie na wszystkich stronach, więc nie ma potrzeby jawnego dodawania RequireJS samodzielnie.
Aby dodać plik JS bootstrap, wykonałem następujące kroki na Magento 2.2.4.
Krok 1: Umieść plik JS w następującej lokalizacji.
app/design/frontend/{Vendorname}/{Themename}/Magento_Theme/web/js/bootstrap.bundle.min.js
Krok 2: Dodaj następujące skrypty do tego pliku app/design/frontend/{Vendorname}/{Themename}/Magento_Theme/requirejs-config.js
.
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
var config = {
paths: {
'bootstrap':'Magento_Theme/js/bootstrap.bundle.min',
} ,
shim: {
'bootstrap': {
'deps': ['jquery']
}
}
};
Krok 3: Dodaj następujące skrypty w plikach szablonów lub niestandardowych plikach JS (bez script
znacznika).
<script type="text/javascript">
require([ 'jquery', 'jquery/ui', 'bootstrap'], function($){
// core js, jquery, jquery-ui, bootstrap codes go here
});
</script>
Krok 4: Przejdź do folderu głównego Magento i uruchom poniższe polecenie.
php bin/magento setup:upgrade
php bin/magento setup:static-content:deploy
xsi:noNamespaceSchemaLocation
wartość wdefault.xml
. Wydaje mi się, że jest to sprzeczne z całą modułowością w Magento, aby zdefiniować taką ścieżkę. Ale widzę to w Internecie, więc musi tak być.