OK, tôi nghĩ rằng tôi có thể đã giải quyết nó và tôi tin rằng tài liệu này không rõ ràng và cần cập nhật để làm rõ quy trình.
Tôi đã chuyển requirejs-config.js
từ bên trong web/js
và các web
thư mục tương ứng cho cả hai Magento_Theme
và gốc của chủ đề của tôi tại <Vendor>/<theme>
và bây giờ cấu hình RequireJS của tôi được hợp nhất vào chính requirejs-config.js
với tất cả các bao gồm khác.
Vì vậy, có vẻ như bạn phải đưa requirejs-config.js
tệp vào các vị trí sau dựa trên các yêu cầu chủ đề / mô-đun.
Cấp chủ đề
app/design/frontend/<Vendor>/<theme>/requirejs-config.js
Cấp độ mô-đun
app/design/frontend/<Vendor>/<theme>/<Module_Name>/requirejs-config.js
Vì vậy, trong requirejs-config.js
chủ đề của bạn, bạn nên ánh xạ thành phần của mình vào một đường dẫn và sau đó sử dụng shim
để khai báo bất kỳ phụ thuộc nào:
var config = {
map: {
'component': 'js/component'
},
shim: {
'component': {
deps: ['jquery']
}
}
};
Sau đó, bạn sẽ cần tạo một mẫu để giữ việc khởi tạo các thành phần thông qua <script>
thẻ (trừ khi bạn đính kèm trực tiếp vào một phần tử trong tệp .phtml) nếu đây là tuyến bạn muốn đi xuống, bao gồm nội dung sau:
<script type="text/x-magento-init">
{
"*": {
"js/component": {} // Not entirely sure what {} is and what I'm passing here
}
}
</script>
Ngoài ra, liên kết nó với một yếu tố:
<script type="text/x-magento-init">
{
"#element": {
"js/component": {} // Not entirely sure what {} is and what I'm passing here
}
}
</script>
Sau đó, chỉ cần bao gồm mẫu .phtml trong hướng dẫn bố cục của bạn, ví dụ: tôi đã đặt của tôi trong phạm vi default.xml
nằm ở app/design/frontend/<Vendor>/<theme>/Magento_Theme/layout
dưới nút cơ thể và được tham chiếu:
<block class="Magento\Framework\View\Element\Template" name="theme.js" template="Magento_Theme::html/js.phtml" />