Magento 2:如何使用单个商店的自定义模块覆盖核心模板?
Magento 2: How do I override a core template using a custom module for a single store?
我想自定义 /checkout/success
模板文件 (success.phtml
)。我构建了一个自定义模块,它覆盖核心 vendor/magento/module-checkout/Block/Checkout/Onepage/Success
块并将数据添加到 prepareData()
。如果我在我的模块中添加模板文件 (Vendor\Module\view\frontend\templates\success.phtml
),一切都很好:在 phtml 中加载和呈现附加数据没有问题。
问题是我只想为单个商店设置覆盖 - 所以通常我会把新模板放在 app/design/frontend/[theme]/[themename]/Magento_Checkout/templates/success.phtml
- 并期望它会胜过核心版本,但事实并非如此如果我已经有一个覆盖该模板的模块,似乎无法正常工作。
如何使用自定义模块Block配置theme/store关卡模板,让其他店铺使用核心模板?
明白了:在主题的目录结构中,您需要指定 extended 模块名称,而不是核心模块名称。您仍然需要在模块中有一个带有块扩展名的模板文件(这看起来很笨重 - 为什么不默认使用核心?)所以我将核心模板复制到模块中,然后能够将主题级别模板指定为 app/design/frontend/[themeparent]/[themename]/Vendor_Module/template/success.phtml
而不是 app/design/frontend/[themeparent]/[themename]/Magento_Checkout/templates/success.phtml
.
所有主题都使用扩展模块模板(核心副本),特定主题使用自己的模板。
我想自定义 /checkout/success
模板文件 (success.phtml
)。我构建了一个自定义模块,它覆盖核心 vendor/magento/module-checkout/Block/Checkout/Onepage/Success
块并将数据添加到 prepareData()
。如果我在我的模块中添加模板文件 (Vendor\Module\view\frontend\templates\success.phtml
),一切都很好:在 phtml 中加载和呈现附加数据没有问题。
问题是我只想为单个商店设置覆盖 - 所以通常我会把新模板放在 app/design/frontend/[theme]/[themename]/Magento_Checkout/templates/success.phtml
- 并期望它会胜过核心版本,但事实并非如此如果我已经有一个覆盖该模板的模块,似乎无法正常工作。
如何使用自定义模块Block配置theme/store关卡模板,让其他店铺使用核心模板?
明白了:在主题的目录结构中,您需要指定 extended 模块名称,而不是核心模块名称。您仍然需要在模块中有一个带有块扩展名的模板文件(这看起来很笨重 - 为什么不默认使用核心?)所以我将核心模板复制到模块中,然后能够将主题级别模板指定为 app/design/frontend/[themeparent]/[themename]/Vendor_Module/template/success.phtml
而不是 app/design/frontend/[themeparent]/[themename]/Magento_Checkout/templates/success.phtml
.
所有主题都使用扩展模块模板(核心副本),特定主题使用自己的模板。