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

3
  • You want call your phtml in all the product pages ?? Commented Mar 28, 2019 at 8:02
  • Yes @Prathap Can you please send the exact code Commented Mar 28, 2019 at 8:03
  • @shivashankarm check my answer Commented Mar 28, 2019 at 8:27

3 Answers 3

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

3
  • Hi @Rakesh it is working fine but i would like add it before qty section Commented Mar 28, 2019 at 9:38
  • i have updated my answer please check it Commented Mar 28, 2019 at 9:58
  • Hi @Rakesh the above code is working fine Commented Mar 28, 2019 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 and acknowledge you have read our privacy policy.

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