2012-01-07 10 views
2

私は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。

答えて

1

はい、あなたが定義する必要がありますその後

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

それは寿:あなたはこのようなレイアウトの更新を持って<frontend>セクションで、あなたのモジュールの設定あなたのモジュールを無効にすると正しく動作します。それ以外の場合、Magentoはテーマのレイアウトフォルダ内にあるすべてのレイアウトの更新をロードします

+0

ありがとうございます。レイアウト・アップデートを追加したlayout.xmlについてもう一度stackoverflowポストを見つけたので、私は以前これを試しました。しかし、今私は、ブラウザで連絡先のページを読み込むと、フォームは、ページ上に2回表示されます。 2。/ etc/modules/company_module.xmlのアプリケーションでモジュールを無効にすると、デフォルトのフォームが表示されます。しかし、私はadminでモジュールを無効にすると、私の変更されたフォームを使用します。何か案は?また、レイアウトXMLをオーバーライドする最善の方法は何ですか。 contacts.xmlを私のテーマにコピーして、いくつかの変更を加える必要があります。コピーしたファイルで使用する必要がある特別なタグはありますか?乾杯。 – user1136431

+0

重複を避けるため、 ''ディレクティブを使ってデフォルトフォームを削除する必要があると思います。あなたの質問の2番目の部分:disable module outputはレイアウト命令の処理を無効にしないので、 'ifconfig'命令を使ってこのケースのチェックを追加する必要があります。ここのいくつかの洞察力http://stackoverflow.com/questions/5596193/magento-xml-layouts-specify-value-for-ifconfig – Zifius

1

拡張機能を無効にするには2通りの方法があります。出力を無効にするだけなので、disableという言葉を引用符で囲みます。どのように現在無効にしているかによっては、他の方法も試してみてください。

  1. [システム]> [設定]> [詳細設定]> [詳細設定]> [モジュール出力を無効にする]に移動し、拡張機能の無効を選択します。しかし、これは、出力を無効にするだけです。エクステンションがイベントを観察するような他のタスクを実行しても、これは引き続き実行されます。完全にアプリの/ etc /モジュールに行く/タグでfalseに真を変更company_module.xml拡張機能を無効にするに
  2. <config> 
        <modules> 
         <company_module> 
          <active>true</active> 
          <codePool>local</codePool> 
         </company_module> 
    </modules> 
    

+0

お返事ありがとうございます。しかし、私はmagentoでモジュールを無効にする方法を知っています。しかし、私の問題は、コアモジュールをオーバーライドすることです。つまり、モジュールを無効にすると、magentoは既定のテンプレートではなく、変更したテンプレートを使用してGoogleに連絡します。誰かが私の設定ファイルをチェックして助けになるなら。どのように私はコアモジュールのレイアウトxmlとテンプレートを無効にする必要があります。私はcontacts.xmlレイアウトをコピーしてそれを私のテーマに入れる必要がありますか?レイアウトファイルを有効にするために、モジュールの設定に何かを追加する必要がありますか?乾杯。 – user1136431

関連する問題