OK、私はそれを解決したかもしれないと思うし、ドキュメントは曖昧であり、プロセスを明確にするために更新する必要があると思う。
テーマの両方とルートのそれぞれ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テンプレートを含めるだけです。たとえば、bodyノードの下にdefault.xml
あるに配置しapp/design/frontend/<Vendor>/<theme>/Magento_Theme/layout
、参照します。
<block class="Magento\Framework\View\Element\Template" name="theme.js" template="Magento_Theme::html/js.phtml" />