Unobtrusively add block in cart

谁说胖子不能爱 提交于 2019-12-11 04:29:55

问题


For a module I'm working on, I want to add a block in the shopping cart screen, I want to do it unobtrusively and I'd like to place it beneath the cart content and before the other blocks (coupon, shipping estimation, totals, ...).

I've managed to do the unobtrusive part: an observer listens to controller_action_layout_load_before and if the FullNameAction is checkout_cart_index it adds a handle of my layout update xml file:
the observer:

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');
    }
}

and the layout file:

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

With this, the content of my phtml file shows up, but I'm not able to place it where I want.
My first try was to use the before="name.of.block" attribute, but it doesn't work. If I use before="whatever" it goes before everything inside the checkout.cart block, and if I use after="whatever" it goes after everything. In short it doesn't take the content of before or after into consideration.
Looking at the XML layout files of Magento's core modules, I realized that those argument for before and after only appears when the blocks they are placing after or before are inside the right/left columns. So my guess is that it's something special for those columns.

So my question is, can I specify the location of my block inside content? And yes, how?
Another solution would be to load the block asynchronously, as I could then append to the div of my choice the result of the AJAX call, but I'd rather do it in a "normal" way if I can.

Thanks for reading :)

来源:https://stackoverflow.com/questions/5963878/unobtrusively-add-block-in-cart

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!