Làm cách nào để tải tệp phtml chỉ cho trang chủ? (Magento 2)


7

Tôi đang cố tải một tệp phtml như thế này:

Tệp /app/design/frontend/name/themename/Magento_Theme/layout/default.xml

    <referenceContainer name="page.top">
        <block class="Magento\Framework\View\Element\Template" name="startphoto" template="html/startphotos.phtml">
            <arguments>
                <argument name="section" xsi:type="string">homepage</argument>
                <argument name="position" xsi:type="number">0</argument>
            </arguments>
        </block>
    </referenceContainer>

Tôi muốn tải nó chỉ trên trang chủ, nhưng nó vẫn đang tải trên mỗi trang. Các cuộc tranh luận dường như bị bỏ qua.

Câu trả lời:


23

Theo như Magento2, default.xmllà cuộc gọi ở mỗi trang. Nếu bạn thêm mã này vào lúc default.xmlđó, nó sẽ tự động gọi mọi trang trong chủ đề hiện tại của bạn.

Nếu bạn biết về khái niệm trình xử lý Magento 1.x thì bạn có thể hiểu đó defaultlà một thẻ điều khiển được gọi ở mỗi trang . Trong Magento 2.X , e rất xử lý là các tệp bố cục riêng lẻ.

Vì vậy, nếu muốn thêm tệp phtml chỉ ở trang chủ thì bạn cần thêm mã đó tại tệp bố cục cms_index_index.xml( /app/design/frontend/name/themename/Magento_Cms/layout/cms_index_index.xml) vì cms_index_indexlà trình xử lý chỉ gọi ở nhà


Nếu tôi cần gọi mô-đun tùy chỉnh của mình trong trang sản phẩm chỉ sử dụng tệp XML mô-đun, làm thế nào để làm điều đó? Giống như thêm tải xuống được liên kết trước khi thêm vào nút giỏ hàng mà không thay đổi trên tệp catalog_product_view.xml.
Hitesh Vaghasiya

Nếu bạn đã tạo một mô-đun tùy chỉnh thì hãy tạo catalog_product_view.xmltại app\code\[vendorname]\[ModuleName]view\frontend\layout* viết tại đây
Amit Bera

8

Bạn có thể sử dụng xml để thực hiện tác vụ này
Bên trong cms_index_index.xmlđặt xml như thế này

<referenceContainer name="content">
        <container name="block.container" htmlTag="div" htmlId="slider.container" htmlClass="block-home-container" before="">
            <block class="Magento\Framework\View\Element\Template" name="block.banner" as="block.custom.cms" template="Magento_Theme::block.phtml" after="-" />
        </container>
</referenceContainer>

5

Tạo tên tệp xml với /app/design/frontend/Vendor/theme/Magento_Theme/layout/cms_index_index.xml

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
   <referenceContainer name="page.top">
     <block class="Magento\Framework\View\Element\Template" name="startphoto" template="Magento_Theme::html/startphotos.phtml">
        <arguments>
            <argument name="section" xsi:type="string">homepage</argument>
            <argument name="position" xsi:type="number">0</argument>
        </arguments>
     </block>
  </referenceContainer>         
</page>

2
tốt hơn bao gồm đường dẫn cho tệp xml, nó sẽ cải thiện câu trả lời nhiều hơn. Cảm ơn
Mujahidh

Nếu bạn sử dụng tệp XML như thế này, thì sẽ ở đâu html/startphotos.phtml , liên quan đến tệp xml? Tôi không thể tìm ra nó.
Alex Timmer

1
cập nhật câu trả lời kiểm tra nó
Prashant Valanda
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.