自定义模块中的 Magento Layout xml 不起作用
Posted
技术标签:
【中文标题】自定义模块中的 Magento Layout xml 不起作用【英文标题】:Magento Layout xml in custom module not working 【发布时间】:2013-06-17 18:54:37 【问题描述】:您好 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>
我只是将“命名空间”和“模块”设置为我的自定义命名空间和自定义模块名称的占位符。
在前端的 xml 布局中,我只是放入了一些错误配置,以查看它是否会导致错误,但 xml 文件甚至无法解析。例如我输入<layout> </xxxlayout>
配置有什么问题?
布局xml文件放在base/default/layout/module/module.xml下
我在同一个文件中配置的管理布局完美运行!
【问题讨论】:
【参考方案1】:可能有很多问题(有些无法调试,因为您在此处发布之前更改了 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
检查,因此您的布局文件将被跳过。
从您的节点中删除空白区域,您将解决一个潜在问题。
【讨论】:
嘿艾伦,非常感谢你,这正是问题所在。我已经用了 3 个小时了,你是我的英雄 :) 在我看来这是一个应该修复的错误......因为我写的是格式良好的 xml。打算举报。 这个问题有什么进展吗?以上是关于自定义模块中的 Magento Layout xml 不起作用的主要内容,如果未能解决你的问题,请参考以下文章