Magento2: Как добавить пользовательский блок на страницу продукта


Я хочу добавить свой пользовательский шаблон на страницу продукта точно так же, как $this->getChildHtml('custom_product_info').

Как и в magento1.9 для использования $this->getChildHtml('custom_product_info') мы добавляем xml-формат, как показано ниже:

<catalog_product_view>
    <reference name="product.info"> 
        <block type="core/template"  name="custom_product_info" template="custom.phtml"/>  
    </reference>
</catalog_product_view>

Что такое xml и процесс добавления пользовательского шаблона в Magento2.1?

Author: Vinaya Maheshwari, 2018-03-26

5 answers

Попробуйте это:

<?xml version="1.0"?>
<page 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">
            <block class="{Vendor}\{Module}\Block\Catalog\Product\View\{Class}" name="{your.block.name}" template="{Vendor}_{Module}::{template_name}.phtml">
                <!-- If you have any arguments to pass -->
                <arguments>
                    <argument translate="true" name="{argument_name}" xsi:type="string">{Your argument}</argument>
                </arguments>
            </block>
        </referenceBlock>
    </body>
</page>
 2
Author: hungersoft, 2018-03-26 06:22:33

Если вы хотите добавить этот пользовательский блок с помощью пользовательского модуля, Затем создайте catalog_product_view.xml в app/code/{Vendorname}/{moduleName}/view/frontend/layout,.

<?xml version="1.0"?>
<page 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">
            <block class="{Vendor}\{Module}\Block\{BLOCK_CLASSS}" name="{block.name.inlayout}"  as="{name_aliase_path}"
template="{Vendor}_{ModuleName}::{YourTemaplte}.phtml">
            </block>
        </referenceBlock>
    </body>
</page>

Затем вы можете вызвать свой блок с помощью кода at в форме.phtml в

<?= $block->getChildHtml({name_aliase_path}) ?>
 2
Author: Amit Bera, 2018-03-26 06:33:04

Используйте это

<?xml version="1.0"?>
<page 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">
            <block class="Magento\Framework\View\Element\Template" name="block.name"  as="block.alias"
template="{Vendor}_{ModuleName}::{YourTemaplte}.phtml">
            </block>
        </referenceBlock>
    </body>
</page>
 1
Author: Kishan Patadia, 2018-03-26 06:34:04
 <referenceContainer name="product.info.main">
        <block class="Magento\Framework\View\Element\Template" name="{argument_name}" template="template_name.phtml"/>
    </referenceContainer>
 0
Author: hweb87, 2018-03-26 07:19:39
<referenceContainer name="content">

            <block class="Xcommerce\Category\Block\Overview" name="overview" 
            template="X2commerce_Category::custom.phtml">
        </block>
</referenceContainer>
 0
Author: Hitesh Balpande, 2019-01-04 12:17:39