Magento 2-如何在另一个phtml文件、xml布局、静态块和cms页面中调用自定义phtml


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

我正在创建一个magento 2主题。我只是想知道如何在xml layout, static block, cms page或另一个.phtml文件中添加.phtml文件。非常感谢。

用于改进文档/答案

自定义文件路径

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

调用xml layout文件

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

调用blocks and cms pages

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

调用任何phtml文件

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

OR,与之前一样

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

一般约定为<VendorName_ModuleName>::relative/path/to/phtml/in/templates/

示例:

  • 在xml布局中<block class="Magento'Framework'View'Element'Template" name="default_home_page" template="Magento_Cms::default/home.phtml"/>

  • 在phtml中<?php include ($block->getTemplateFile('Magento_Catalog::product/list/toolbar/viewmode.phtml')) ?>

您的自定义文件路径

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

将phtml文件调用到cms块和页面:-

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

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

调用xml布局文件:-

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

调用另一个phtml文件:-

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

从另一个phtml模板文件中调用phtml模版文件:

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

test.phtml将位于app/design/frontend/Vendor/themename/Magento_Theme/templates 中