Home » Php » php – Magento 2 – How to call a custom phtml file in another phtml file, xml layout, static block and cms page?

php – Magento 2 – How to call a custom phtml file in another phtml file, xml layout, static block and cms page?

Posted by: admin April 23, 2020 Leave a comment

Questions:

I am creating a magento 2 theme. I just want to know how can I add .phtml file in xml layout, static block, cms page or in another .phtml file. Thank You.

How to&Answers:

For improving documentation/answer

Custom file path

app/design/frontend/{Package}/{theme}/Magento_Theme/templates/html/test.phtml

calling in xml layout file

<block class="Magento\Framework\View\Element\Template" name="test_file" template="Magento_Theme::html/test.phtml"/>

Calling in blocks and cms pages

{{block class="Magento\Framework\View\Element\Template" name="test_file" template="Magento_Theme::html/test.phtml"}}

Calling in any phtml file

<?php include ($block->getTemplateFile('Magento_Theme::html/test.phtml')) ?>

OR, as before

<?php echo $this->getLayout()->createBlock("Magento\Framework\View\Element\Template")->setTemplate("Magento_Theme::html/test.phtml")->toHtml();?>

Answer:

General convention is
<VendorName_ModuleName>::relative/path/to/phtml/in/templates/

Examples:

Answer:

Call phtml template file from within another phtml template file:

<?php echo $this->getLayout()->createBlock("Magento\Framework\View\Element\Template")->setTemplate("Magento_Theme::test.phtml")->toHtml(); ?>

test.phtml will be located in app/design/frontend/Vendor/themename/Magento_Theme/templates

Answer:

Your custom file path

app/code/{vendor_name}/{module_name}/view/frontend/templates/custom.phtml

calling in phtml file into cms block and pages:-

{{block class="Magento\Framework\View\Element\Template" template="Vendor_Module::custom.phtml"}}

OR

{{block class="Vendor\Module\Block\your_file_name" template="Vendor_Module::custom.phtml"}}

calling in xml layout file:-

<block class="Magento\Framework\View\Element\Template" template="Vendor_Module::custom.phtml">

calling in another phtml file:-

<?php echo $this->getLayout()->createBlock("Magento\Framework\View\Element\Template")->setTemplate("Vendor_Module::custom.phtml")->toHtml();?>