require-config.js
사용자 정의 테마에서 사용하는 방법을 알고 있지만 myfile.js
모든 페이지에서 사용자 정의 Javascript 파일 ( ) 을 사용하고 싶습니다 . 어떤 디렉토리에 추가 require-config.js
하고 어떻게 사용해야합니까?
마 젠토 공식 페이지를 참조하지 마십시오.
require-config.js
사용자 정의 테마에서 사용하는 방법을 알고 있지만 myfile.js
모든 페이지에서 사용자 정의 Javascript 파일 ( ) 을 사용하고 싶습니다 . 어떤 디렉토리에 추가 require-config.js
하고 어떻게 사용해야합니까?
마 젠토 공식 페이지를 참조하지 마십시오.
답변:
requirejs-config.js
JavaScript 자원 맵핑을 작성하는 데 사용합니다 . 모든 필수 설정은 다음에서 찾을 수 있습니다 pub/static/_requirejs
.
내가 아는 한 Js 필요 : 템플릿을 사용하여 스크립트 호출을 통해 사용자 지정 스크립트를로드하는 올바른 방법 입니다. Magento\Framework\View\Element\Template
블록 클래스를 사용하여 새 템플릿을 만듭니다 .
우리는 모든 페이지에 JS 파일을로드 싶어 할 경우 새 모듈을 만들고 싶어하지, 우리의 블록에 참조해야 before.body.end
나after.body.start container
에 default.xml
마 젠토 테마 모듈 -.
app / design / frontend / Vendor / Theme / Magento_Theme / layout / 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>
app / design / frontend / Vendor / Theme / requirejs-config.js
var config = {
map: {
'*': {
customScript:'Magento_Theme/js/customscript'
}
}
};
app / design / frontend / Vendor / Theme / 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
있습니까? 또는 customscript.js
의 함수 내에서 선언 된 코드를 실행해야 custom_js.phtml
합니까?
after.body.start
가로 변경되어야 하는지 궁금 합니다 before.body.end
.
Requirejs-config 파일 : 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-config.js의 종속성은 requirejs 자체를로드 할 때 (상점 어디에서나) 파일을로드합니다. 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 ...
훌륭한 Magento 개발 방식 인 Khoa의 권장 사항에 대한 대안으로 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은 바닥 글이 생략 된 체크 아웃과 같은 페이지에도 모든 페이지에로드됩니다.