OK, myślę, że mogłem to rozwiązać i uważam, że dokumentacja jest niejednoznaczna i wymaga aktualizacji w celu wyjaśnienia procesu.
Przeniosłem moje requirejs-config.js
z wewnątrz web/js
i web
katalogów odpowiednio dla obu Magento_Theme
i katalogu głównego mojej kompozycji w, <Vendor>/<theme>
a teraz moja konfiguracja RequireJS jest scalona z głównym requirejs-config.js
ze wszystkimi innymi włącznikami .
Wygląda więc na to, że musisz dołączyć requirejs-config.js
plik w następujących lokalizacjach w zależności od wymagań motywu / modułu.
Poziom motywu
app/design/frontend/<Vendor>/<theme>/requirejs-config.js
Poziom modułu
app/design/frontend/<Vendor>/<theme>/<Module_Name>/requirejs-config.js
Tak więc w swoim requirejs-config.js
motywie powinieneś odwzorować komponent na ścieżkę, a następnie użyć shim
do zadeklarowania zależności:
var config = {
map: {
'component': 'js/component'
},
shim: {
'component': {
deps: ['jquery']
}
}
};
Następnie musisz utworzyć szablon do przechowywania inicjalizacji komponentów za pomocą <script>
znacznika (chyba że podłączysz go bezpośrednio do elementu w pliku .phtml), jeśli jest to trasa, którą chcesz zejść, dołącz następującą treść:
<script type="text/x-magento-init">
{
"*": {
"js/component": {} // Not entirely sure what {} is and what I'm passing here
}
}
</script>
Alternatywnie, powiąż go z elementem:
<script type="text/x-magento-init">
{
"#element": {
"js/component": {} // Not entirely sure what {} is and what I'm passing here
}
}
</script>
Następnie po prostu dołącz szablon .phtml do instrukcji układu, na przykład umieściłem mój w obszarze default.xml
znajdującym się app/design/frontend/<Vendor>/<theme>/Magento_Theme/layout
pod węzłem body i wspomniałem:
<block class="Magento\Framework\View\Element\Template" name="theme.js" template="Magento_Theme::html/js.phtml" />