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.
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();?>