不显眼地在购物车中添加块

时间:2011-05-11 12:02:10

标签: layout magento unobtrusive

对于我正在处理的模块,我想在购物车屏幕中添加一个块,我想不引人注意地做,我想将它放在购物车内容之下和其他块之前(优惠券,运费估算,总计,......)。

我设法做了不显眼的部分:观察者听取controller_action_layout_load_before,如果 FullNameAction checkout_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"它会先于checkout.cart块内的所有内容,如果我使用after="whatever",它会追踪所有内容。简而言之,它不会考虑beforeafter的内容 查看Magento核心模块的XML布局文件,我意识到beforeafter的那些参数仅在它们放置在右侧/左侧列之后的块之后出现。所以我的猜测是这些列特别重要。

所以我的问题是,我可以在内容中指定我的块的位置吗?是的,怎么样?
另一个解决方案是异步加载块,因为我可以将我选择的div附加到AJAX调用的结果,但是如果可以的话,我宁愿以“正常”方式执行它。

感谢阅读:)

0 个答案:

没有答案