Magento 2はbodyタグを閉じる前にスクリプトを追加します


7

magento 2のbody終了タグの前にスクリプトを追加する適切な方法は何ですか?

すべてのページで使用できるようにしたい。

更新:

私は次のものを持ってmyvendor/mytheme/Magento_Theme/layout/default.xmlいます:

<referenceContainer name="before.body.end">
    <block class="\Magento\Framework\View\Element\Template" template="Theme_Module::js.phtml" name="module_js"/>
</referenceContainer>

そしてjs.phtml/Magento_Theme/templates

それは正しいでしょうか?

回答:


13

レイアウトでそれを行うことができます

    <referenceContainer name="before.body.end">
        <block class="\Magento\Framework\View\Element\Template" template="You_Module::js.phtml" name="module_js"/>
    </referenceContainer>

そしてjs.phtmlで

<script src="//cdn.javascrip.com/test.js" />

このために新しいモジュールを作成する必要がありますか?私はmagento_theme default.xmlをオーバーライドしてこれをそこに追加しようとしましたが、喜びがありませんでした。
マット

テーマは機能するはず
KAndy

したがって、<referenceContainer name = "before.body.end"> <block class = "\ Magento \ Framework \ View \ Element \ Template" template = "Theme_Moduleを使用してmyvendor / mytheme / Magento_Theme / layout / default.xmlを取得しました:: js.phtml "name =" module_js "/> </ referenceContainer>そして/ Magento_Theme / templates>内のjs.phtmlは正しいですか?おかげで
マット

動作しますが、答えはもう少し完全になる可能性があるため、実際には明確な例(ファイルなど)です。
hakre 2016

カスタムモジュールでこれを行うにはどうすればよいですか?
ジビンジョージ

3

referenceContainerレイアウトファイルにコードを追加する

app/design/frontend/<vendor>/<theme>/Magento_Theme/layout/default.xml

体が終わる前

 <referenceContainer name="before.body.end">
      <block class="Magento\Framework\View\Element\Js\Components" name="js.beforebody" as="jsbeforebody" template="Magento_Theme::js/js.phtml"/>
    </referenceContainer>

ボディスタート後

 <referenceContainer name="after.body.start">
      <block class="Magento\Framework\View\Element\Js\Components" name="js.afterbody" as="jsafterbody" template="Magento_Theme::js/js.phtml"/>
    </referenceContainer>

js.phtmlテンプレートファイルを作成し、jsスクリプト/コードをこのファイルに入れます。

app/design/frontend/<vendor>/<theme>/Magento_Theme/templates/js/js.phtml

1

質問の更新されたコードは正しくありません。あなたは変更する必要があるTheme_ModuleMagento_Themeではdefault.xml

以下は完全なコードです

myvendor/mytheme/Magento_Theme/layout/default.xml、コンテンツを追加します

<referenceContainer name="before.body.end">
    <block class="Magento\Framework\View\Element\Template" template="Magento_Theme::js.phtml" name="module_js"/>
</referenceContainer>

js.phtmlディレクトリ内にファイルを追加しますmyvendor/mytheme/Magento_Theme/templates

js.phtml、以下のようなjsコ​​ンテンツを追加します

<script>
    ...
</script>

サイトのキャッシュを更新すると、効果がわかります。


追加のヒント

js.phtmlコンテンツについて

Magento2のjsコンテンツは別のトピックです。それは公式ドキュメントのJavaScriptの呼び出しと初期化で見つけることができます。

公式の例は以下のようです

<script>
require([
    'jquery',
    'accordion'  // the alias for "mage/accordion"
], function ($) {
    $(function () { // to ensure that code evaluates on page load
        $('[data-role=example]')  // we expect that page contains the <tag data-role="example">..</tag> markup
            .accordion({ // now we can use "accordion" as jQuery plugin
                header:  '[data-role=header]',
                content: '[data-role=content]',
                trigger: '[data-role=trigger]',
                ajaxUrlElement: "a"
            });
    });
});
</script>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.