0

私は Alan Storm の本がとても好きですが、16 時間試した後もまだ先に進むことができません!

有効な支払い方法がありますが、ワン ステップ チェックアウトで利用可能な支払い方法の表示にブロックを追加したいと考えています。

最初のステップは、基本的なテストを機能させることです....

コンテンツをターゲットにすると、テスト テキストが期待どおりに表示されます。

<checkout_onepage_index>
        <reference name="content">
            <block type="core/text_list" name="rrtest_list"/>
        </reference>
        <reference name="rrtest_list">
            <block type="core/text" name="rrtest1">
                <action method="setText">
                    <text>ABCDEFGHIJ KLMNOPQRSTUVWXYZ *************</text>
                </action>
            </block>
        </reference>
</checkout_onepage_index>

しかし、本当に必要なブロックをターゲットにすると、うまくいきません:

<checkout_onepage_index>
        <reference name="checkout.onepage.payment">
            <block type="core/text_list" name="rrtest_list"/>
        </reference>
        <reference name="rrtest_list">
            <block type="core/text" name="rrtest1">
                <action method="setText">
                    <text>ABCDEFGHIJ KLMNOPQRSTUVWXYZ *************</text>
                </action>
            </block>
        </reference>
</checkout_onepage_index>

何も表示されません。なぜこれが機能しないのですか?

4

1 に答える 1

0

コンテンツ ブロックはコンテナー (つまり、追加したすべてのブロックが自動的にレンダリングされることを意味します) であり、それがうまく機能した理由です。

一方、checkout.onepage.payment ブロックは Mage_Core_Block_Template から (何も変更しない抽象クラスを介して) 派生し、このクラスから派生したブロックはコンテンツを自動的にレンダリングしません。

ブロックが含まれるように、支払いブロックの phtml ファイルを変更する必要があります。

<?php echo $this->getChildHtml( 'rrtest_list_alias' ); // this outputs the html directly ?>

また

<?php echo $this->getChild( 'rrtest_list_alias' )->myFunctions()->toHtml(); // this allows you to call some functions on your block and then outputs the html ?>

レイアウト xml ファイルを次のように変更します (as 部分に注意してください)。

<block type="core/text_list" name="rrtest_list" as="rrtest_list_alias"/>
于 2013-01-29T08:21:06.377 に答える