Hello Magento专业人士。
我正在为magento编写一个自定义模块,并在这里遇到一些问题。 我的布局xml不起作用。 首先 - 禁用缓存,禁用编译,启用magento开发人员模式并启用日志记录。 似乎所有东西都配置正确,但我甚至没有得到异常或日志。
我的模块config.xml:
<?xml version="1.0"?>
<config>
<modules>
<Namespace_Module>
<version>1.1.0</version>
<depends>
<Mage_Catalog />
</depends>
</Namespace_Module>
</modules>
<global>
<helpers>
<module>
<class>Namespace_Module_Helper</class>
</module>
</helpers>
<models>
...
</models>
<blocks>
...
</blocks>
</global>
<frontend>
<routers>
<module>
<use>standard</use>
<args>
<module>Namespace_Module</module>
<frontName>module</frontName>
</args>
</module>
</routers>
<layout>
<updates>
<module>
<file>
module/module.xml
</file>
</module>
</updates>
</layout>
</frontend>
<admin>
<routers>
<adminhtml>
...
</adminhtml>
</routers>
</admin>
<adminhtml>
<layout>
<updates>
<module>
<file>module.xml</file>
</module>
</updates>
</layout>
</adminhtml>
</config>
我只是将“Namespace”和“Module”设置为我的自定义命名空间和自定义模块名称的占位符。
在前端的布局xml中,我只是输入了一些错误配置,看它是否会导致错误,但xml文件甚至看不到要解析。例如,我放入了<layout> </xxxlayout>
配置有什么问题?
布局xml文件放在base / default / layout / module / module.xml
下我在同一个文件中配置的管理布局完美无缺!
答案 0 :(得分:14)
这可能是一些事情(有些事情因为你在发布之前更改了你的config.xml
文件而无法调试),但有一件事就是立即弹出
<file>
module/module.xml
</file>
应该是这个
<file>module/module.xml</file>
由于无数和复杂的原因,Magento和PHP解析XML文档,其中空白区域在文本节点中很重要。这意味着当布局更新XML解析代码到达此处时
#File: app/code/core/Mage/Core/Model/Layout/Update.php
public function getFileLayoutUpdatesXml(
//...
foreach ($updateFiles as $file) {
$filename = $design->getLayoutFilename($file, array(
'_area' => $area,
'_package' => $package,
'_theme' => $theme
));
if (!is_readable($filename)) {
continue;
}
它为您的代码生成的$filename
字符串将类似于
string '/path/to/mage/app/design/frontend/base/default/layout/
module/module.xml
' (length=...)
也就是说,中间有一大块空白。此路径不会通过is_readable
检查,因此将跳过您的布局文件。
从节点中删除空白区域,您将删除一个潜在问题。