所以你想为$item
循环中的每个渲染模板中的内容?
如果您查看app/design/frontend/base/default/layout/checkout.xml
,您将看到定义的原始侧边栏块:
<block type="checkout/cart_sidebar" name="cart_sidebar" template="checkout/cart/sidebar.phtml" before="-">
<action method="addItemRender"><type>simple</type><block>checkout/cart_item_renderer</block><template>checkout/cart/sidebar/default.phtml</template></action>
<action method="addItemRender"><type>grouped</type><block>checkout/cart_item_renderer_grouped</block><template>checkout/cart/sidebar/default.phtml</template></action>
<action method="addItemRender"><type>configurable</type><block>checkout/cart_item_renderer_configurable</block><template>checkout/cart/sidebar/default.phtml</template></action>
</block>
我不确定您是否能够简单地使用项目渲染器checkout/cart_item_renderer
(根据您的问题,这是您想要的),但让我们尝试一下。因此,您必须以编程方式创建块的实例,为其提供项目,为其分配模板,并将其 HTML 输出到您的变量。
$items='';
foreach($cartItems as $item) {
$items.=Mage::app()->getLayout()->createBlock('checkout/cart_item_renderer')
->setItem($item)
->setTemplate('checkout/cart/sidebar/default.phtml')
->toHtml();
}
请注意在创建块之后,我们如何设置项目。这很重要,因为如果您检查模板,您会在顶部看到它调用的内容:
<?php $_item = $this->getItem() ?>
试试这个,看看它是否有帮助!