我知道如何require-config.js
在自定义主题中使用,但我想myfile.js
在所有页面上使用自定义javascript文件()。我应该在哪个目录中添加require-config.js
以及如何使用它,以便它可以正常工作?
请不要参考Magento官方页面。
我知道如何require-config.js
在自定义主题中使用,但我想myfile.js
在所有页面上使用自定义javascript文件()。我应该在哪个目录中添加require-config.js
以及如何使用它,以便它可以正常工作?
请不要参考Magento官方页面。
Answers:
requirejs-config.js
用于创建JavaScript资源映射。我们可以在以下位置找到所有需要的配置pub/static/_requirejs
。
据我所知,通过Require Js:using template调用我们的脚本来加载自定义脚本的正确方法。我们将使用Magento\Framework\View\Element\Template
其块类创建新模板。
如果我们要在所有页面上加载js文件并且不想创建新模块,则我们的块应引用before.body.end
或包含after.body.start container
在default.xml
-Magento Theme模块中。
应用/设计/前端/供应商/主题/ Magento_Theme /布局/default.xml
<?xml version="1.0"?>
<page layout="3columns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<referenceContainer name="after.body.start">
<block class="Magento\Framework\View\Element\Template" name="custom.js" template="Magento_Theme::custom_js.phtml"/>
</referenceContainer>
</page>
应用/设计/前端/供应商/主题/requirejs-config.js
var config = {
map: {
'*': {
customScript:'Magento_Theme/js/customscript'
}
}
};
应用/设计/前端/供应商/主题/Magento_Theme/web/js/customscript.js
define('jquery', function($) {
//Your code here
//alert('Here');
}(jQuery)
);
我们的模板将调用我们的脚本:app / design / frontend / Vendor / Theme / Magento_Theme / templates / custom_js.phtml
<script>// <![CDATA[
require([
'jquery',
'customScript'
], function ($, script) {
//Your code here
//alert('Here');
});
// ]]>
</script>
清除Magento缓存并运行静态内容部署: php bin/magento setup:static-content:deploy
\app\design\frontend\Enim\blank\Magento_CatalogWidget\templates\product\widget\content\grid.phtml
,但在Theme文件夹(app / design / frontend / Vendor / Theme / requirejs-config.js)中有requirejs-config.js和脚本。这个可以吗?问题是我从多个不同的地方调用脚本。
templates\product\widget\content\grid.phtml
调用模板的时间。
custom_js.phtml
被视为常规回调,在执行其中包含的代码之后执行customscript.js
?还是我需要执行in customscript.js
函数中声明的代码custom_js.phtml
?
after.body.start
应该更改为before.body.end
?
Requirejs配置文件: app / code / Vendor / Module / view / frontend / requirejs-config.js
var config = {
paths: {
'myfile': "Vendor_Modulename/js/myfile"
},
shim: {
'myfile': {
deps: ['jquery']
}
}
}
您的js文件应位于:app / code / Vendor / Module / view / frontend / web / js / myfile.js
现在,您可以通过以下方法在模板文件中的任何位置使用:
<srcipt>
require(["jquery","myfile"],function($,myfile){
$(document).ready(function(){
//call your js here...
})
})
</script>
使用更简单的版本deps
。加载requirejs本身时(商店中的所有地方),requirejs-config.js中的依赖项都将加载文件。这是您的requirejs-config.js外观的示例:
var config = {
// When load 'requirejs' always load the following files also
deps: [
'common-js'
],
// Library file path.
paths: {
'common-js': 'js/Your-File-Name'
},
// The rest of your config file ...
作为Khoa推荐的一种替代方法,这是出色的Magento开发实践,您可以将JavaScript粘贴到.phtml文件中,如下所示:
<srcipt>
require(["jquery"],function($){
$(document).ready(function(){
your script here...
})
});
</script>
然后,按照Khoa的回答中所述,从default.xml链接您的phtml文件,尽管我建议将其添加到before.body.end中。然后,从copyright.phtml中调用您的JS脚本,如下所示:
<script>
jQuery(document).ready(function($) {
..call your script here ..
});
</script>
copyright.phtml会加载到每个页面上,即使在诸如checkout的页面上也会省略页脚。