覆盖magento核心的问题联系我们表格

时间:2012-01-07 22:52:54

标签: php magento override

我已设法覆盖magento的默认联系我们表单,其他字段和功能似乎有效。

问题是当我在magento中禁用我的模块时,会显示我的自定义联系人表单而不是默认值。

我的假设是,只有我的模块处于活动状态,我的自定义(操作方法和模板)才会可用/显示。

我认为我的问题与覆盖布局,块,模板有关。

一些建议会很好。

这是我的代码:

应用程序/代码/本地/ MyCompany的/ ContactsExtension的/ etc / config.xml中

<config>
   <modules>
        <MyCompany_ContactsExtension>
            <version>0.1.0</version>  
        </MyCompany_ContactsExtension>
   </modules>
<frontend>
    <routers>
        <contacts>
            <args> 
                <modules> 
                    <MyCompany_ContactsExtension before="Mage_Contacts">MyCompany_ContactsExtension</MyCompany_ContactsExtension> 
                </modules> 
            </args> 
        </contacts>
    </routers>
</frontend>

<global>
    <blocks>
        <contactsextension>
            <class>MyCompany_ContactsExtension_Block</class>
        </contactsextension>
    </blocks>
   <helpers>
        <contactsextension>
            <class>MyCompany_ContactsExtension_Helper</class>
        </contactsextension>
    </helpers>           
</global>
</config>

基本上,我复制了默认的contacts.xml并添加了我的更改。我想我可能没有正确更新它。

应用程序/设计/前端/企业/ mytheme的/布局/ contactsextension.xml

<layout version="0.1.0">
    <default>
        <reference name="footer_links">
            <action method="addLink" translate="label title" module="contacts" ifconfig="contacts/contacts/enabled"><label>Contact Us</label><url>contacts</url><title>Contact Us</title><prepare>true</prepare></action>
        </reference>
    </default>

<contacts_index_index translate="label">
    <label>Contact Us Form</label>
    <reference name="head">
        <action method="setTitle" translate="title" module="contacts"><title>Contact Us</title></action>
    </reference>
    <reference name="root">
        <action method="setTemplate"><template>page/2columns-right.phtml</template></action>
        <action method="setHeaderTitle" translate="title" module="contacts"><title>Contact Us</title></action>
    </reference>
    <reference name="content">
        <block type="core/template" name="contactForm" template="contactsextension/form.phtml">
            <block type="contactsextension/additionalfield" name="contacts.addfields" as="addfields" template="contactsextension/additionalfield.phtml" />
        </block>    
    </reference>
</contacts_index_index>
</layout>

谢谢, duniya。

2 个答案:

答案 0 :(得分:1)

有两种方法可以“禁用”扩展名,我将单词disable设置为引号,因为只有一种禁用输出。根据您当前的禁用方式,请确保您也尝试其他方法。

  1. 在管理区域中,转到系统&gt;配置&gt;高级&gt;高级&gt;禁用模块输出并为您的分机选择禁用。但是,正如它所说,这只会禁用输出。如果您的扩展程序执行其他任务,例如观察事件,这仍将继续。
  2. 要完全禁用扩展,请转到app / etc / modules / company_module.xml,将标签中的true更改为false:

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

答案 1 :(得分:1)

是的,你需要在<frontend>部分的模块配置中定义你有这样的布局更新:

<layout>
    <updates>
        <uniquehandle>
            <file>module_layout.xml</file>
        </uniquehandle>
    </updates>
</layout>

然后它会在您禁用模块时正常工作。否则,Magento会加载在主题

的布局文件夹中找到的所有布局更新