2009-06-29 9 views
4

独自のマゼンタモジュールを作成し、コアコントローラとモデルを正常に拡張しましたが、レイアウトxmlファイルで同じことをするのに問題があります。私はちょうどcheckout multishipping配送ページを更新したいと思う。これまではcheckout.xmlファイル全体を上書きすることしかできませんでしたが、私のxmlファイル内にある方が好きです。 モジュールからフロントエンドレイアウトを更新する

この

は私が私のモジュールのconfig.xmlに持っているとtm.xmlファイルは/アプリ/設計/フロントエンド/デフォルト/デフォルト/レイアウトで

<frontend> 
     <layout> 
      <updates> 
        <checkout> 
         <file>tm.xml</file> 
      </checkout> 
     </updates> 
    </layout> 
</frontend> 

おかげ

答えて

3

は何かということです更新:以下のテキストは、テンプレートファイルとXMLファイルをapp/designフォルダの外に保存する方法を示しています。この答えが書かれてから何年もの間、これは私のMagentoのコアチームに強く落胆しています。彼らはこれまでアプリケーションレベルでコードを適用するようになってきており、開発された新しい技術を阻止し続けました。強く落胆しますが、歴史的な理由から私は答えを残しています。

まず、レイアウトファイルをモジュールのどこかに配置することを検討してください。私はその練習がどれほど普及しているのかは分かりませんが、配布の観点からは意味があります。また、誰かがデフォルトからテーマを変更しても、レイアウトの上書きが適用されます。あなたは完全にインストールし、あなたのMagentoの中でcheckout.xmlを交換している以上、あなたのXMLと、述べてきたように、このような何かを行うことは、

<file>../../../../../code/local/Packagename/Modulename/layouts/tm.xml</file> 

第二に動作するはずです。あなたはこれをしたくありません。代わりにに、Magentoの利用可能な更新リストにレイアウトの更新(そのXMLファイルの内容)を追加します。だから、代わりにこのようなことをしてください。

<layout> 
    <updates> 
     <my_package_my_module_name>      
      <file>../../../../../code/local/Packagename/Modulename/layouts/tm.xml</file> 
     </my_package_my_module_name> 
    </updates> 
</layout>   

ここに大きな変化は、私たちが<my_package_my_module_name>する<チェックアウト>を変更しましたです。 Magentoはすべてをこのセクションで指定されたXMLをパッケージレイアウトと呼ばれるものにロードします。これで、あなたのXMLはcheckout.xmlのXMLの横に置かれます。 tm.xmlで

は、セットアップここに心に留めておくべき大きなものは、checkout.xmlで既存のルールマルチ出荷まだ意志のためにあるマルチ出荷

<layout version="0.1.0"> 
    <checkout_multishipping> 
     <!-- ... --> 
    </checkout_multishipping> 

    <checkout_multishipping_login> 
     <!-- ... --> 
    </checkout_multishipping_login> 
</layout> 

のためのあなたの特定のルールをよ存在する。これらのルールが何をしているかを上書きするには、<参照/ >のルールを記述する必要があります。これがMagentoのレイアウトシステムの仕組みです。まだIntro to Layoutsセクションがない場合は、Magento Designer's Guideを調べることをおすすめします。

最後に、コントローラーをオーバーライドしていると述べました。複数出荷コントローラを使用する場合は、チェックアウト_ >タグを使用する必要があります。コントローラのそのページのアクションコントローラ/アクションメソッドの組み合わせと一致するタグを使用する必要があります。

<packagename_modulename_actioncontrollername_action /> 
+0

レイアウトのように、mymoduleから直接テンプレートファイルを読み込むにはどうすればよいですか? TIA。 – Kamal

+0

@Kamalあなたはそうすることができません。そうすることをこの日と年齢で強くお勧めします。 –

+0

ok ..お返事ありがとうございます... – Kamal

関連する問題