【发布时间】:2016-08-22 08:52:13
【问题描述】:
重现步骤
- 在 WAMP 服务器 3.0、Windows 10 Pro - 32 位、PHP 5.6.15、MySQL 5.7.9 上安装了 Magento 2.0.4
- 在 app\design\frontend\Vendor1\themeparent 中创建了 Magento_blank 的子主题 themeparent,其中包含用于扩展的多个布局 xml 文件带有模板 .phtml 文件。从管理员激活。工作正常。
theme.xml => <parent>Magento/blank</parent>
- 为上述主题 themeparent 创建了另一个子主题 themechild(它本身就是 magento blank 的子主题)。这个子主题是在不同的供应商文件夹中创建的,即 Vendor2 这个主题路径是 app\design\frontend\Vendor2\themechild 。在内部创建布局 .xml 文件以扩展其父主题布局。从管理员激活了这个二级子主题。 .xml 文件甚至没有处理。不工作。
theme.xml => <parent>Vendor1/themeparent</parent>
3b。虽然 childtheme 中存在的模板 .phtml 文件或 .css 文件可以正常工作,但如果从 Vendor1\themeparent 布局文件调用相应的布局容器/块。
- 如果为了测试,相同的子主题 childtheme 放在其父主题的同一供应商中,即 Vendor1 ,主题路径变为 app\design\frontend\ Vendor1\themechild,然后相同的布局 .xml 文件工作正常。
已尝试清除 magento 的 public/static 和 var 文件夹。另外,在使用 cli 命令运行后尝试过
php bin/magento setup:static-content:deploy
php bin/magento indexer:reindex
php bin/magento setup:upgrade
但没有解决它。
预期结果
所需的主题继承是这样的:
Magento_blank => Vendor1_themeparent => Vendor2_childtheme 。 (注意供应商不同)
结果:布局 .xml 无法在子主题中加载。
但是如果为了测试,继承是这样的:
Magento_blank => Vendor1_themeparent => Vendor1_childtheme 。 (注意供应商相同)
结果:Layout .xml 正确加载并在子主题中正常工作。
根据 http://devdocs.magento.com/guides/v2.0/frontend-dev-guide/themes/theme-inherit.html#set-a-parent-theme 上的 Magento 2 指南,明确提到 “父主题和子主题可以属于不同的供应商。例如,您的自定义主题可以继承自Magento 空白主题。” .因此,如果我从 Magento_blank(供应商:Magento)的子主题(在供应商 1 中)创建第二级子主题(在供应商 2 中),理想情况下应该可以正常工作。但它没有发生。如果布局 .xml 文件属于不同的供应商,则不会处理输出。如果我将这两个主题放在同一个供应商中,它们就可以正常工作。
实际结果
在不同供应商文件夹中的 2 级子主题中扩展布局 .xml 文件不起作用。
为什么 Magento 2.0.4 对于具有不同供应商名称的 2 级主题继承不能正常工作? 这是一个严重的问题,就好像您假设从某个地方购买了付费主题(他们通过继承 Magento_blank 创建了该主题),现在您想要创建该付费主题的子主题,但在不同的供应商名称文件夹中(显然在您的公司名称下) ,你将无法这样做! 您只剩下两个选择,要么将您的子主题放在他们的供应商名称中;要么或编辑他们的主题 .xml 文件以调用您的子主题模板文件或 .css/.js(如果在您的供应商名称中);第二种情况显然会丢失更新,方式怪异,不推荐。
那有什么办法呢??
【问题讨论】: