1

我有一个新的产品类型,当在购物车页面上时,我需要为该自定义产品类型显示不同的 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>

还有其他方法吗?提前致谢。

4

1 回答 1

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>

当然,这不是一个完整的解决方案,而是您下一步想法的好方向;)

于 2013-11-06T21:59:23.307 回答