【问题标题】:Simple Magento Module: Update layout not working简单 Magento 模块:更新布局不起作用
【发布时间】:2014-06-18 11:08:41
【问题描述】:

故事

我为此搜索了解决方案,但我找不到的似乎都无法解决问题;我是制作 Magento 模块的新手,作为开始,我尝试创建一个非常简单的 title 属性更改。

问题

很简单:它不起作用(Title 属性根本没有改变)。我刷新了所有缓存并验证模块确实在 Config > Advanced > Advanced 中加载。

代码:

/app/etc/modules/Acme_NewCoolModule.xml:

<?xml version="1.0"?>
<config>
    <modules>
        <Acme_NewCoolModule>
            <active>true</active>
            <codePool>local</codePool>
        </Acme_NewCoolModule>
    </modules>
</config>

app/code/local/Acme/NewCoolModule/etc/config.xml:

<?xml version="1.0"?>
<config>
    <modules>
        <Acme_NewCoolModule>
            <version>1.0.0.0</version>
        </Acme_NewCoolModule>
    </modules>
    <frontend>
        <layout>
            <updates>
                <Acme_NewCoolModule>
                    <file>acme_newcoolmodule.xml</file>
                </Acme_NewCoolModule>
            </updates>
        </layout>
    </frontend>
</config>

app/design/base/default/layout/acme_newcoolmodule.xml:

<?xml version="1.0"?>
<layout>
    <default>
        <reference name="head">
            <action method="setTitle"><string>Hello World</string></action>
        </reference>
    </default>
</layout>

【问题讨论】:

    标签: magento


    【解决方案1】:

    您的Acme_NewCoolModule.xml 代码包含错误的配置

    <config>
        <modules>
            <Acme_NewCoolModule>
                <active>true</active>
                <codePool>local</codePool>
            </Acme_NewCoolModule>
        </modules>
    </config>
    

    你有&lt;/Firtal_EnhancedEcommerce&gt;&lt;Firtal_NewCoolModule&gt;,这是错误的。

    我假设您的 namespaceAcme 并且模块名称是 NewCoolModule

    【讨论】:

    • 对不起 - 我只是忘了从原来的改变它,它实际上是按照你在这里写的那样写的。现在在 OP 中更改它。
    • @Dencker :编辑后,您的 Acme_NewCoolModule 也是错误的。检查关闭节点&lt;/Acme_EnhancedEcommerce&gt;
    • 感谢您的通知 :)
    【解决方案2】:

    您在/app/etc/modules/Acme_NewCoolModule.xml 的代码应该是

    /app/etc/modules/Acme_Newcoolmodule.xml

    代码:

    1) 代替

    <?xml version="1.0"?>
    <config>
        <modules>
            <Firtal_NewCoolModule>
                <active>true</active>
                <codePool>local</codePool>
            </Firtal_EnhancedEcommerce>
        </modules>
    </config>
    

    应该是:

    <?xml version="1.0"?>
    <config>
        <modules>
            <Firtal_Newcoolmodule>
                <active>true</active>
                <codePool>local</codePool>
            </Firtal_Newcoolmodule>
        </modules>
    </config>
    

    2) 而不是app/code/local/Acme/NewCoolModule/etc/config.xml

    应该是

    app/code/local/Acme/Newcoolmodule/etc/config.xml

    配置代码应该是

    <?xml version="1.0"?>
    <config>
        <modules>
            <Acme_Newcoolmodule>
                <version>1.0.0.0</version>
            </Acme_Newcoolmodule>
        </modules>
        <frontend>
            <layout>
                <updates>
                    <newcoolmodule>
                        <file>newcoolmodule.xml</file>
                    </newcoolmodule>
                </updates>
            </layout>
        </frontend>
    </config>
    

    其中 Acme - 命名空间Newcoolmodule - 模块名称

    Magento Camel Case 用法简介:

    您的 config.xml 中有一个名为 global/models/yourpackage 的配置节点,您可以在其中保存类模型的前缀。

    当您调用Mage::getModel('packagename/classname')时,Magento 会获取此配置节点,例如Company_Yourmodule_Models 添加一个 _ ,然后是大写首字母的类名:

    Company_Yourmodule_Models_Classname

    如果你有cAMElcaSe 类名,方法相同。因此,假设您的班级名称是 ClassName 那么您必须调用 Mage::getModel('packagename/className') 并且 magento 将其解析为:Company_Yourmodule_Models_ClassName

    【讨论】:

    • 啊,骆驼案是问题吗?
    • @Dencker 查看我编辑的答案。粘贴上面的配置代码并检查
    • 现在都试过了,假设 Acme_Newcoolmodule 在第一个代码块中也是如此。还是不行。我正在生产服务器上工作(是的,我知道,我是个坏孩子),所以也许其他一些模块正在覆盖标题。是否可以在 Magento 标记中做与 CSS 的 !important 等效的操作?
    • 将布局 acme_newcoolmodule.xml 放在您的设计中,而不是放在基本文件夹中。还要检查 config.xml 中的布局更新
    • 移动它,刷新缓存;不过还是不行。
    猜你喜欢
    • 1970-01-01
    • 2014-04-27
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    • 2012-03-08
    • 2015-01-30
    • 1970-01-01
    • 2015-08-14
    相关资源
    最近更新 更多