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

Posted

技术标签:

【中文标题】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? 【发布时间】:2016-03-21 04:37:54 【问题描述】:

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

【问题讨论】:

【参考方案1】:

用于改进文档/答案

自定义文件路径

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')) ?>

或者,和以前一样

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

【讨论】:

调用块和 cms 页面 - 方法不起作用...它会生成 500 内部服务器错误。 (使用 2.0.5 版本)。你有什么想法吗? 这个答案太棒了。一个地方有这么多信息,这在 Magento 文档中基本上是不可能找到的。 谢谢@MilanChandro! +1 但我有一个问题。如何使用上述技术调用时事通讯 phtml。但是时事通讯表格看起来很好但不起作用???【参考方案2】:

一般约定是 &lt;VendorName_ModuleName&gt;::relative/path/to/phtml/in/templates/

示例:

在 xml 布局中 &lt;block class="Magento\Framework\View\Element\Template" name="default_home_page" template="Magento_Cms::default/home.phtml"/&gt;

在 phtml 中 &lt;?php include ($block-&gt;getTemplateFile('Magento_Catalog::product/list/toolbar/viewmode.phtml')) ?&gt;

【讨论】:

【参考方案3】:

您的自定义文件路径

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

【讨论】:

【参考方案4】:

从另一个 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

【讨论】:

以上是关于Magento 2 - 如何在另一个 phtml 文件、xml 布局、静态块和 cms 页面中调用自定义 phtml 文件?的主要内容,如果未能解决你的问题,请参考以下文章

Magento 2在结帐页面phtml中发送到支付网关之前获取订单ID?

php Magento 2:自定义共享和打印按钮phtml

在 list.phtml 中显示产品属性 - Magento

php Magento 2:从phtml上的块获取当前URL

获取magento类别view.phtml的特定属性

Magento 1.7:工具栏/pager.phtml:getShowAmounts/getShowPerPage-> 我在哪里可以配置这个?