Cara mengganti file template dalam pembuatan modul di Magento2


8

Saya ingin mengganti:

/opt/lampp/htdocs/magento_composer/vendor/magento/module-catalog/view/frontend/templates/product/view/addtocart.phtml

saya telah menyalin dan menempelnya di modul khusus saya di:

/opt/lampp/htdocs/magento_composer/app/code/Hello/Custom/view/frontend/templates/product/view/addtocart.phtml

Ini adalah file Layout saya:

<?xml version="1.0"?>
<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>

        <referenceBlock name="product.info.addtocart" template="Hello_Custom::product/view/addtocart.phtml" after="alert.urls">

        </referenceBlock>

    </body>
</page>

di:

/opt/lampp/htdocs/magento_composer/app/code/Hello/Custom/view/frontend/layout/catalog_product_view.xml

module.xml:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd">
    <module name="Hello_Custom" setup_version="1.0.0" schema_version="1.0.0">
    </module>
</config>
  • Modul berfungsi untuk dunia halo sederhana sehingga terdaftar dengan benar ...

Masalahnya adalah dalam file petunjuk path template berasal dari vendor .. tetapi itu harus berasal dari modul khusus saya saja (bukan dari tema)


adalah penamaan catalog_product_view.xml sangat penting atau kami dapat memberikan nama apa pun ke file. sebenarnya saya butuh bantuan untuk mengganti template
siddhesh

Siddhesh penamaan file itu pasti penting. Ini menentukan di mana file layout dimuat. Misalnya default.xmldimuat pada setiap halaman tetapi catalog_product_view.xmlhanya dimuat pada catalog/product/viewtindakan.
Jacques

Jawaban:


17

Anda dapat mencoba dengan kode di bawah ini dalam file xml,

<?xml version="1.0"?>
<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceContainer name="content">
            <referenceBlock name="product.info.addtocart">
                <action method="setTemplate">
                    <argument name="template" xsi:type="string">Hello_Custom::product/view/addtocart.phtml</argument>
                </action>
            </referenceBlock>
         </referenceContainer>
    </body>
</page>

Ya pasti ..
Narendra.vyas

bagaimana cara memeriksa apakah file layout xml digunakan atau tidak? saya mencoba menulis xml yang tidak valid dan masih halaman saya di-render dengan benar. jadi saya menyimpulkan file layout xml saya tidak dijalankan apakah Anda memberi tahu saya cara mengatasi ini
siddhesh

atau apakah kita perlu menjalankan beberapa jenis perintah setelah memperbarui file xml
siddhesh

1
Sebenarnya, dalam dokumen dev magento 2 Anda dapat membaca "menggunakan instruksi <action>. Cara ini tidak disarankan , tetapi dapat digunakan untuk ...". Saya akan merekomendasikan menggunakan metode yang disarankan pada halaman di bawah Set a block template . Jadi menggunakan tindakan untuk mengubah template bukanlah solusi yang baik.
drew7721

10

Ada tiga metode yang tersedia untuk mengganti file template di Magento

Sebagai contoh: Di sini kita mengganti file addtocart.phtml untuk produk sederhana.

Metode 1:

<referenceContainer name="content">
    <referenceBlock name="product.info.addtocart">
        <action method="setTemplate">
            <argument name="template" xsi:type="string">Vendor_Module::product/view/addtocart.phtml</argument>
        </action>
    </referenceBlock>
</referenceContainer>

Metode 2:

<referenceContainer name="content">
    <referenceBlock name="product.info.addtocart" template="Vendor_Module::product/view/addtocart.phtml"/>
</referenceContainer>

Metode 3:

<referenceContainer name="product.info.form.content">
    <block class="Magento\Catalog\Block\Product\View" name="product.info.addtocart" as="addtocart" template="Vendor_Module::product/view/addtocart.phtml"/>
</referenceContainer>
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.