2

私が取り組んでいるモジュールの場合、ショッピング カート画面にブロックを追加したいのですが、目立たないようにして、カートの内容の下で、他のブロック (クーポン、配送見積もり、合計、...)。

私は目立たない部分を行うことができました: オブザーバーがリッスンしcontroller_action_layout_load_beforeFullNameActioncheckout_cart_index私のレイアウト更新 xml ファイルのハンドルを追加する場合:
オブザーバー:

public function showUpperGifts($observer)
{
    $fullNameAction = $observer->getEvent()->getAction()->getFullActionName();
    if ($this->_isEnabled &&
        ($fullNameAction == 'checkout_cart_index')) {
            $layoutUpdate = $observer->getEvent()->getLayout()->getUpdate()
                                ->addHandle('my_special_handle');
    }
}

そしてレイアウトファイル:

<my_special_handle>
    <reference name="content">
        <block type="module/block" name="module_block" template="module/block.phtml"/>
    </reference>
</my_special_handle>

これで、phtml ファイルの内容が表示されますが、必要な場所に配置できません。
私の最初の試みはbefore="name.of.block"属性を使用することでしたが、うまくいきません。使用すると、ブロックbefore="whatever"内のすべての前に配置され、使用するとすべての後に配置されます。要するに、それはの内容または考慮に入れません。Magento のコア モジュールの XML レイアウト ファイルを見て、前後に配置するブロックが左右の列の内側にある場合にのみ、および の引数が表示されることに気付きました。だから私の推測では、それはそれらのコラムにとって特別なものだと思います。 checkout.cartafter="whatever"beforeafter
beforeafter

私の質問は、コンテンツ内のブロックの場所を指定できますか? はい、どのように?
別の解決策は、ブロックを非同期的にロードすることです。これにより、選択した div に AJAX 呼び出しの結果を追加できますが、可能であれば「通常の」方法で実行したいと思います。

読んでくれてありがとう :)

4

0 に答える 0