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.

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