Хорошо, я думаю, что я, возможно, решил это, и я полагаю, что документация неоднозначна и нуждается в обновлении, чтобы прояснить процесс.
Я переместил requirejs-config.js
из внутри web/js
и web
каталогов соответственно для обоих Magento_Theme
и корень моей темы на <Vendor>/<theme>
и теперь мой RequireJS конфигурации сливается в основной requirejs-config.js
со всеми другими включает в себя.
Итак, похоже, что вы должны включить requirejs-config.js
файл в следующих местах в зависимости от требований темы / модуля.
Уровень темы
app/design/frontend/<Vendor>/<theme>/requirejs-config.js
Уровень модуля
app/design/frontend/<Vendor>/<theme>/<Module_Name>/requirejs-config.js
Итак, в вашей requirejs-config.js
теме вы должны сопоставить свой компонент с путем, а затем использовать shim
для объявления любых зависимостей:
var config = {
map: {
'component': 'js/component'
},
shim: {
'component': {
deps: ['jquery']
}
}
};
Затем вам нужно будет создать шаблон для хранения инициализации компонентов с помощью <script>
тега (если вы не присоедините его непосредственно к элементу в файле .phtml), если это маршрут, по которому вы хотите перейти, включите следующее содержимое:
<script type="text/x-magento-init">
{
"*": {
"js/component": {} // Not entirely sure what {} is and what I'm passing here
}
}
</script>
В качестве альтернативы, свяжите его с элементом:
<script type="text/x-magento-init">
{
"#element": {
"js/component": {} // Not entirely sure what {} is and what I'm passing here
}
}
</script>
Затем просто включите шаблон .phtml в инструкции по компоновке, например, я разместил мой в default.xml
расположенном app/design/frontend/<Vendor>/<theme>/Magento_Theme/layout
под узлом body и ссылался на:
<block class="Magento\Framework\View\Element\Template" name="theme.js" template="Magento_Theme::html/js.phtml" />