1

I have created custom phtml file, but that file is calling to all the products magento2

Please find the below code:

<referenceContainer name="product.info.form.content" >
            <block
                    class="Vendor\Module\Block\Product\View\RewardMesg"
                    name="reward_frontend_msg"
                    template="Vendor_Module::product/view/rewardMesg.phtml" before="product.info.addtocart"/>
</referenceContainer>

My block code is:

namespace Vendor\Module\Block\Product\View;

use Magento\Framework\View\Element\Template;
use Magento\Framework\Registry;

class RewardMesg extends Template
{
    /**
     * @var Registry
     */
    protected $registry;

    /**
     * @var \Magento\Catalog\Model\Product
     */
    protected $product;

    /**
     * ProductView constructor.
     * @param Template\Context $context
     * @param array $data
     * @param Registry $registry
     */
    public function __construct(
        Template\Context $context,
        array $data = [],
        Registry $registry
    )
    {
        $this->registry = $registry;
        parent::__construct($context, $data);
    }

    /**
     * @return \Magento\Catalog\Model\Product
     */
    public function getProduct()
    {
        if (is_null($this->product)) {
            $this->product = $this->registry->registry('product');
        }

        return $this->product;
    }
}

Help me appriciate.

Thanks

  • You want call your phtml in all the product pages ?? – Prathap Gunasekaran Mar 28 at 8:02
  • Yes @Prathap Can you please send the exact code – shivashankar m Mar 28 at 8:03
  • @shivashankarm check my answer – Rakesh Donga Mar 28 at 8:27
1

create below file and add below code after check it

app/code/Vendor/Module/view/frontend/layout/catalog_product_view.xml

<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceContainer name="product.info.main">
            <block class="Vendor\Module\Block\Product\View\RewardMesg" name="reward_frontend_msg" after="product.info.price" template="Vendor_Module::product/view/rewardMesg.phtml"/>
        </referenceContainer>
    </body>
</page>

Please don't forget to clear cache after change in xml files

  • Hi @Rakesh it is working fine but i would like add it before qty section – shivashankar m Mar 28 at 9:38
  • i have updated my answer please check it – Rakesh Donga Mar 28 at 9:58
  • Hi @Rakesh the above code is working fine – shivashankar m Mar 28 at 10:26
1

Try this,

Add the catalog_product_view.xml in the below path in your custom module

app/code/Vendor/ModuleName/view/frontend/layout/catalog_product_view.xml

then add the below code in it

<?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>
   <referenceContainer name="content">
        <block class="Vendor\Module\Block\Product\View\RewardMesg"  name="reward_frontend_msg" template="Vendor_Module::product/view/rewardMesg.phtml" before="product.info.addtocart" after="page.main.title">
        </block>
    </referenceContainer>
</body>
</page>

and place your phtml in the respective path

app/code/Vendor/ModuleName/view/frontend/templates/product/view/rewardMesg.phtml

Your phtml will load in after product title and before add to cart button.

Hope this helps

1
  1. app/code/Vendor/Modulename/view/frontend/layout/catalog_product_view.xml

    <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
        <body>
            <block class="Vendor\Module\Block\Blockname" name="reward_frontend_msg" template="Vendor_Module::product/view/rewardMesg.phtml"/>
        </body>
    </page>
    
  2. app/code/Vendor/Modulename/view/frontend/templates/product/view/rewardMesg.phtml

    //Diplsay the bellow code where you want to block on product page
    
    <?php echo $block->getBlockHtml('reward_frontend_msg'); ?>
    

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.