php – Magento自定义布局local.xml不适用于自定义模块输出页面
作者:互联网
我正在开发两种,Magento定制模块和Magento自定义主题,但我面临一些让我疯狂的问题!!!(P.S.:Magento 1.7.0.2)
我的模块和主题结构如下:
app
-local
-MyNameSpace
-MyPackageName
-Block
-controllers
-etc
-Helper
-Model
-sql
design
-frontend
-default
-myCustomTheme
-etc
-layout
-template
我的config.xml(放在MyPackageName / etc上):
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<Namespace_PackageName>
<version>0.1.0</version>
</Namespace_PackageName>
</modules>
<frontend>
<routers>
<Namespace_PackageName>
<use>standard</use>
<args>
<module>Namespace_PackageName</module>
<frontName>packagename</frontName>
</args>
</Namespace_PackageName>
</routers>
<layout>
<updates>
<namespace_packagename>
<file>myCustomTheme/layout/local.xml</file>
</namespace_packagename>
</updates>
</layout>
</frontend>
<global>
<blocks>
<namespace_packagename>
<class>Namespace_PackageName_Block</class>
</namespace_packagename>
</blocks>
</global>
</config>
我想在自定义模块页面上应用一些自定义主题皮肤. I.e.:用我的控制器,我们称它为ExampleController,而exampleAction()动作方法……这个页面布局的变化,应该用local.xml中的标签包裹,对吧?这不行!
关键是,访问URL“mysite.com/packagename/example/example”并使用layoutViewer模块查看句柄,我可以看到packagename_example_example作为句柄,但我无法自定义它,因为它不是在local.xml中被识别! Magento让我疯了,有人知道我做错了什么吗?
非常感谢提前:)
编辑
当我将自定义模板和local.xml文件放在基目录中时,它工作正常!!我得到这样的东西:
>基本文件夹中的自定义模板,自定义主题文件夹中的local.xml – 不工作
>自定义主题文件夹中的自定义模板,自定义主题文件夹中的local.xml – 不工作
>基本文件夹中的自定义模板,基本文件夹中的local.xml – 工作正常!
>自定义主题文件夹中的自定义模板,基本文件夹中的local.xml – 不工作
有人知道可能导致这种情况的原因吗? Magento无法识别我的自定义文件夹,只有当我将它们放在Magento Core所在的基本目录中时.
解决方法:
你在这里混淆了一些概念.
首先,Magento将始终在当前配置的主题层次结构中查找名为local.xml的文件.
design/frontend/default/[CURRENT THEME]/layout/local.xml
design/frontend/default/default/layout/local.xml
design/frontend/base/myCustomTheme/layout/local.xml
这适用于无模块布局自定义.所以不要将你的文件命名为local.xml,它只会让人感到困惑.
其次,当您在config.xml中为模块指定自定义布局XML文件时,路径应该来自布局文件夹的基础
<!-- BAD -->
<file>myCustomTheme/layout/local.xml</file>
<!-- GOOD -->
<file>my-customer-file.xml</file>
您可以通过在Magento版本中找到以下行来获取Magento正在使用的所有XML文件的路径列表
#File: app/code/core/Mage/Core/Model/Layout/Update.php
$fileStr = file_get_contents($filename);
并添加一些调试代码
var_dump($filename);
$fileStr = file_get_contents($filename);
最后,根据您的更新,听起来您并没有设置Magento来使用您的自定义主题.确保主题名称设置为
System -> Configuration -> Design -> Themes
标签:php,magento,magento-1-7 来源: https://codeday.me/bug/20190723/1509685.html