我有一个新的产品类型,当我在购物车页面上时,我需要为该自定义产品类型显示不同的cart.phtml。如果我这样设置,所有产品类型都将使用这个新的cart.phtml。
<checkout_cart_index>
<reference name="checkout.cart">
<action method="setTemplate">
<template>mymodule/checkout/cart.phtml</template>
</action>
</reference>
</checkout_cart_index>
但是,如果我使用它,它就不起作用。
<PRODUCT_TYPE_custom module="catalog">
<reference name="checkout.cart">
<action method="setTemplate">
<template>mymodule/checkout/cart.phtml</template>
</action>
</reference>
</PRODUCT_TYPE_custom>
还有其他方法吗?提前谢谢。
答案 0 :(得分:0)
处理PRODUCT_TYPE_custom仅在产品页面上使用。如果您的购物车包含特定产品并添加可在布局更新中使用的自定义布局句柄,则可以检入控制器。在这种情况下,您需要覆盖结帐控制器。 Howewer控制器不是拥有逻辑的最佳位置。所以更好的解决方案是使用像* controller_action_layout_load_before *这样的事件,并在观察者观察者中添加这个逻辑:
$update = $observer->getEvent()->getLayout()->getUpdate();
$update->addHandle('custom_checkout_handle_name');
然后在布局更新中添加xml:
<custom_checkout_handle_name>
<reference name="checkout.cart">
<action method="setTemplate"><template>checkout/cart_alternative.phtml</template></action>
</reference>
</custom_checkout_handle_name>
当然,这不是一个完整的解决方案,而是你下一个想法的好方向;)