Magento 2 thêm tập lệnh trước khi đóng thẻ body


7

Cách thích hợp để thêm tập lệnh trước thẻ đóng trong magento 2 là gì?

Tôi muốn nó có sẵn cho tất cả các trang.

CẬP NHẬT:

Tôi đã tham gia 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.phtmlbên trong/Magento_Theme/templates

Có nên như vậy không?

Câu trả lời:


13

Bạn có thể làm điều đó với bố cục

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

và trong js.phtml

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

Tôi có cần tạo một mô-đun mới cho việc này không? Tôi đã cố gắng ghi đè magento_theme default.xml và thêm phần này vào đó nhưng không có gì vui.
Matt

chủ đề nên hoạt động
KAndy 22/2/2016

Vì vậy, tôi đã có trong myvendor / huyền thoại / Magento_Theme / layout / default.xml với <ReferenceContainer name = "before.body.end"> <block class = "\ Magento \ Framework \ View \ Element \ Template" template = "Theme_Module :: js.phtml "name =" module_js "/> </ ReferenceContainer> Và js.phtml bên trong / Magento_Theme / samples> Điều đó có đúng không? Cảm ơn
Matt

Hoạt động, nhưng câu trả lời có thể đầy đủ hơn một chút để nó thực sự là một ví dụ rõ ràng thực sự (các tệp, v.v.).
hakre

Làm thế nào tôi có thể làm điều này trong mô-đun tùy chỉnh?
george jibin

3

Thêm referenceContainermã trong tập tin bố trí

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

Trước khi kết thúc cơ thể

 <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>

Để sau khi cơ thể bắt đầu

 <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>

Tạo js.phtmltệp mẫu và đặt tập lệnh / mã js của bạn vào tệp này.

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

1

Các mã cập nhật trong câu hỏi của bạn là không đúng. Bạn cần thay đổi Theme_Moduleđể Magento_Themetrong default.xml.

Dưới đây là mã hoàn chỉnh

Trong của bạn myvendor/mytheme/Magento_Theme/layout/default.xml, thêm nội dung

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

Thêm tập tin js.phtmlbên trong thư mục myvendor/mytheme/Magento_Theme/templates.

Trong js.phtml, thêm nội dung js như dưới đây

<script>
    ...
</script>

Làm mới bộ đệm trang web và bạn sẽ thấy hiệu quả.


Mẹo bổ sung

Về nội dung js.phtml

Nội dung js trong Magento2 là một chủ đề khác, bạn có thể tìm thấy nó trong tài liệu chính thức Gọi và khởi tạo JavaScript .

Một ví dụ chính thức như dưới đây

<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>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.