私はmagentoのデフォルトのContact usフォームをオーバーライドすることができました。追加のフィールドと機能があり、動作するようです。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。
ありがとうございます。レイアウト・アップデートを追加したlayout.xmlについてもう一度stackoverflowポストを見つけたので、私は以前これを試しました。しかし、今私は、ブラウザで連絡先のページを読み込むと、フォームは、ページ上に2回表示されます。 2。/ etc/modules/company_module.xmlのアプリケーションでモジュールを無効にすると、デフォルトのフォームが表示されます。しかし、私はadminでモジュールを無効にすると、私の変更されたフォームを使用します。何か案は?また、レイアウトXMLをオーバーライドする最善の方法は何ですか。 contacts.xmlを私のテーマにコピーして、いくつかの変更を加える必要があります。コピーしたファイルで使用する必要がある特別なタグはありますか?乾杯。 – user1136431
重複を避けるため、 ' 'ディレクティブを使ってデフォルトフォームを削除する必要があると思います。あなたの質問の2番目の部分:disable module outputはレイアウト命令の処理を無効にしないので、 'ifconfig'命令を使ってこのケースのチェックを追加する必要があります。ここのいくつかの洞察力http://stackoverflow.com/questions/5596193/magento-xml-layouts-specify-value-for-ifconfig –
Zifius