1

これで長い間立ち往生しています:(コアテンプレートファイルをオーバーライドしようとしています

app/design/frontend/base/default/template/persistent/checkout/onepage/billing.phtml

正常にアクティブ化したカスタム モジュールを使用し、新しいモジュールの構成ファイルは次の場所にあります。

アプリ/コード/ローカル/CustomCheckout/チェックアウト/etc/config.xml。

以下、内容です

<config>
    <modules>
        <CustomCheckout_Checkout>
            <version>1.0.0</version>
        </CustomCheckout_Checkout>
    </modules>
    <frontend>
        <routers>
            <checkout>
                <args>
                    <modules>
                         <CustomCheckout_Checkout before="Mage_Checkout">CustomCheckout_Checkout</CustomCheckout_Checkout>
                    </modules>
                </args>
            </checkout>
        </routers>
        <layout>
            <updates>
                <checkout>
                    <file>persistent.xml</file>
                </checkout>
            </updates>
        </layout>       
    </frontend>
</config>

上記のbilling.phtmlファイルを順番に呼び出すpersistent.xmlレイアウトをオーバーライドしようとしています。新しいレイアウトファイルを次の場所に配置しました

app/design/frontend/default/CustomCheckout/layout/persistent.xml.

以下、内容です

<layout version="0.1.0">
    <checkout_onepage_index>
        <reference name="checkout.onepage.billing">
            <action method="setTemplate">
                <template>checkout/onepage/billing.phtml</template>
            </action>
        </reference>
    </checkout_onepage_index>
</layout>

変更したbilling.phtmlファイルを以下に配置しました

app/design/frontend/default/CustomCheckout/template/checkout/onepage/billing.phtml

しかし取り上げられていません。私は頭を悩ませています...どんな助けも大歓迎です。

4

3 に答える 3

4

うまくいけば、あなたは今までに答えを見つけましたが、後世のために...

ここでの問題は、「Persistent」モジュールがすでにそのテンプレートをオーバーライドしていることです。persist.xml レイアウト ファイルを見ると、次のように表示されます。

    <reference name="checkout.onepage.billing">
        <action method="setTemplate"><template>persistent/checkout/onepage/billing.phtml</template></action>
        <block type="persistent/form_remember" name="persistent.remember.me" template="persistent/remember_me.phtml" />
        <block type="core/template" name="persistent.remember.me.tooltip" template="persistent/remember_me_tooltip.phtml" />
    </reference>

Magento のデフォルトの読み込み順序はアルファベット順です。したがって、Persistent モジュールは「Mage_Persistent」であり、モジュールは「CustomCheckout_Checkout」であるため、Persistent モジュールが最後にロードされ、そのオーバーライドが固執します。

いくつかの解決策があります。1 つは、アルファベットで Mage_Persistent の後にあるようにモジュールの名前を変更することです。

より良い解決策は、Magento の依存関係機能を使用することです。モジュール宣言ファイル (app/etc/modules/CustomCheckout_Checkout.xml) には、おそらく次のようなものがあります。

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

これを次のように変更します。

<?xml version="1.0"?>
<config>
    <modules>
        <CustomCheckout_Checkout>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Persistent />
            </depends>
        </CustomCheckout_Checkout>
    </modules>
</config>

これは、モジュールが Mage_Persistent に「依存」しているため、Mage_Persistent の後にロードする必要があることを Magento に示します。

それがうまくいかない場合は、レイアウト xml で「削除」ノードを使用して、元の課金ブロックを取り除くという別の手法があります。

<remove name="checkout.onepage.billing" />

次に、checkout.xml にあるように、別の名前で再度追加します。さまざまなレイアウト ファイルから必要なすべてのブロックとアクションをその下に追加し、同じエイリアス (as="billing") を使用してください。

最後に、このモジュールが再利用を意図していない場合 (変更は現在のインストールのみに適用されます)、phtml ファイルをカスタム パッケージ/テーマ フォルダーの同じパスにコピーするだけです。

于 2014-05-27T16:05:33.777 に答える
0

これは非常に単純です。xml を次のように簡単に記述できます。

 <checkout_onepage_index>
    <reference name="checkout.onepage.billing">
        <action method="setTemplate">
            <template>your-module/checkout/onepage/billing.phtml</template>
        </action>
        <block type="persistent/form_remember" name="persistent.remember.me" template="persistent/remember_me.phtml" />
        <block type="core/template" name="persistent.remember.me.tooltip" template="persistent/remember_me_tooltip.phtml" />
    </reference>
</checkout_onepage_index>

チェックアウト ページに何らかのエラーがある場合は、請求または shipping.phtml ファイルが欠落していることを意味します。

于 2014-10-29T04:36:45.577 に答える
0

私はマジェントの開発者です。私はlocalhostであなたの問題を実装し、解決策を見つけました。kinex/links (名前空間/モジュール) を作成するだけです。このモジュール レイアウト ファイルには、次のコードが含まれています。

<checkout_onepage_index>
    <reference name="checkout.onepage.billing">
        <action method="setTemplate">
            <template>kinex/links/billing.phtml</template>
        </action>
    </reference>
</checkout_onepage_index>
于 2014-07-16T18:41:13.033 に答える