Magento 2:如何使用单个商店的自定义模块覆盖核心模板?

时间:2018-05-02 15:41:45

标签: templates module override magento2

我想自定义/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配置主题/商店级别模板,让其他商店使用核心模板?

1 个答案:

答案 0 :(得分:0)

想出来:在主题的目录结构中,您需要指定扩展模块名称,而不是核心模块名称。您仍然需要在模块中使用块扩展模板文件(这看起来很笨重 - 为什么不默认使用核心?)所以我将核心模板复制到模块,然后能够将主题级别模板指定为{ {1}}而不是app/design/frontend/[themeparent]/[themename]/Vendor_Module/template/success.phtml

所有主题都使用扩展模块模板(核心副本),特定主题使用它自己的模板。