0

客户希望结帐过程看起来像每个步骤的离散页面(登录/注册、计费、运输等),所以我修改了模板看起来像这样,一切正常。但是,现在他们希望在每一步都显示购物车内容。

我想我可以使用购物车侧边栏模块,但我不能让它正确显示。

部分我怀疑这是因为我不了解 Magento 使用的一些模块/块配置。我已经尝试阅读它,但就像 Magento 的所有内容一样,它非常不清楚。

那么,如何将购物车内容插入到 custom/template/checkout/onepage/billing.phtml 的模板中?我确信有多种方法可以做到这一点,我只是在寻找最简单的方法。

4

2 回答 2

5

这应该适用于任何地方,而不仅仅是在计费阶段:

$quote = Mage::helper('checkout')->getQuote();
foreach ($quote->getItemsCollection() as $item) {
    // output details of an item.
    echo $item->getName();
}

每一个$item都是一个Mage_Sales_Model_Quote_Item

PS。
听起来您正在尝试重新创建在引入单页结帐之前存在的旧的多发货结帐。这可以通过System > Configuration > Checkout > Checkout Options中的第一个设置重新激活。

于 2011-04-11T11:35:00.233 回答
2

Clockworkgeek 让我从这个答案开始,但我还需要显示产品数量、价格以及购物车总价格。Magento 文档充其量是密集的,所以在四处搜索之后,这里是在 Magento 中显示购物车内容的答案,并带有一些用于格式化的表格 HTML:

<?php $quote = Mage::helper('checkout')->getQuote(); //gets the cart contents ?>
<table>
<thead>    
<th>Product</th>
<th>Quantity</th>
<th>Price/ea.</th>
<th>Total</th>
</thead>

<?php foreach ($quote->getItemsCollection() as $item) { ?>
<tr><td><?php echo $item->getName(); ?></td>
<td><?php echo $item->getQty(); ?></td> 
<td><?php echo $this->helper('checkout')->formatPrice($item->getPrice(), 2); ?></td>
<td><?php $floatQty = floatval($item->getQty());
$total = $floatQty * $item->getPrice();
echo $this->helper('checkout')->formatPrice($total, 2); //multiply the quantity by the price and convert/format ?></td>
</tr>       
<?php  } ?>

<tfoot>
<td></td>
<td></td>
<td></td>
<td><?php echo $this->helper('checkout')->formatPrice($quote->getGrandTotal()); ?></td>
</tfoot>
</table>

这可能是一些非常难看的代码,包括粗略的方法来找到每个 $item 的总数,但它确实有效。我确信有更好的方法来获得 $item 总计(calcRowTotal 似乎从来没有工作过),但它可以完成工作。

感谢clockworkgeek 让我走上了正确的道路。

于 2011-04-14T06:57:57.847 回答