如何替换 Magento 2.0 中的 phtml 文件?

How to replace phtml files in Magento 2.0?

在 Magento 2.0 管理面板(Store>Cofiguration>Developer>Debug)中,我已将 "Enabled Template Path Hints for Storefront" 设置为 "Yes"。这为我提供了对为每个部分生成 HTML 代码的 phtml 文件的引用。

Q1) 对这些文件进行更改会得到我想要的结果。但我认为如果我决定将 Magento 更新到更新版本,它们将是 restored/changed。我说得对吗?

Q2) 有没有办法以另一种方式更改 phtml 文件,将 phtml 文件放在我的主题文件夹中?如果是这样,我应该把它们放在哪里?

(我不太喜欢XML简单的HTML变化,如果可能的话我想尽可能写静态HTML。我已经激活了我自己的主题没有任何基本主题。我是 Magento 的新手。)

谢谢!

据我所知,有两种方法可以更改 phtml 模板。对原始文件进行更改 Magento 文件是不好的做法,应该避免。

自定义主题

在自定义主题中,您可以根据 Magento2 的文件夹层次结构更改您喜欢的任何模板。 例如。更改 login.phtml(来自模块 Magento_Customer),您的文件路径将如下所示:

app/design/frontend/${VENDORNAME}/${THEMENAME}/Magento_Customer/templates/form/login.phtml

源文件位于:

app/code/Magento/Customer/view/frontend/templates/form/login.phtml

我希望这有助于理解此处的命名方案。

自定义模块

在自定义模块中,更改模板有点困难。这是一个改变 topmenu.html 来自 模块 Magento_Theme。在您的模块中,模板需要放在此处:

app/code/${VENDORNAME}/${MODULENAME}/view/frontend/templates/html/topmenu.phtml

此外,还需要布局定义:

app/code/${VENDORNAME}/${MODULENAME}/view/frontend/layout/default.xml

<?xml version="1.0"?>
<page layout="1columns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
  <body>
    <referenceBlock class="Magento\Theme\Block\Html\Topmenu" name="catalog.topnav" template="${VENDORNAME}_${MODULENAME}::html/topmenu.phtml" ttl="false"/>
  </body>
</page>

看看 app/code/Magento/Theme/view/frontend/layout/default.xml 以供参考,那里可以找到 xml 废话 ;)